好吧,一些背景信息。我一直在用Bash写一个项目,本质上看你是否在一台ubuntu计算机上做了某些事情,并对你的表现进行了评分,其中之一就是回答问题,或者禁用来宾帐户。运行的文件(init.sh)创建一个新的shell脚本(engine.sh),该脚本实际上根据用户希望分级的级别进行分级。
现在是问题:到目前为止,我向引擎输出的所有检查都正常工作,但是当我进行这个特定的检查(检查一个文件以获得特定的答案)时,它为引擎添加了一个换行符。
所涉职能:
createVuln() {
type="$1"
points=$2
var1="$3"
var2="$4"
var3="$5"
var4="$6"
var5="$7"
test=$("$type" "test" "$var1" "$var2" "$var3" "$var4" "$var5")
message="$("$type" "message" "$var1" "$var2" "$var3" "$var4" "$var5")"
vuln="
if [ ${test} ]; then
scorePoints \"$points\" \"$message\"
fi "
echo "$vuln" >> vulns
totalvulns=$(($totalvulns + 1))
totalpoints=$(($totalpoints + $points))
}
createForensics() {
outputType="$1"
question="$2"
answer="$3"
fileName="$4"
if [ "$outputType" = "test" ]; then
touch "$fileName"
echo "Forensics Question:" > "$fileName"
echo "$question" >> "$fileName"
echo "" >> "$fileName"
echo "ANSWER: " >> "$fileName"
mv "$fileName" "/home/$sysUser/Desktop/"
echo "\"\$(grep \"ANSWER: $answer\" \"/home/$sysUser/Desktop/$fileName\")\" != \"\""
elif [ "$outputType" = "message" ]; then
echo "Solved ${fileName}"
fi
}
如果我用
createVuln createForensics 8 'What is the UID of the user root?' 0 'Forensics Question 1'
这将输出到秃鹫文件如下:
if [
"$(grep "ANSWER: 0" "/home/user/Desktop/Forensics Question 1")" != "" ]; then
scorePoints "8" "
Solved Forensics Question 1"
fi
预期产出:
if [ "$(grep "ANSWER: 0" "/home/user/Desktop/Forensics Question 1")" != "" ]; then
scorePoints "8" "Solved Forensics Question 1"
fi
显然,这些新线路使引擎失灵了。我复制的鉴证功能的代码并不能做到这一点。当我从终端运行时,createForensics函数中的实际回波不会输出换行符.事实上,if语句甚至可以正确地输出。那么是什么导致了这些新线路?!?
发布于 2020-08-31 13:28:56
我和我的朋友刚刚意识到: git没有推动一个特定的改变来解决这个问题是有问题的。有一个空行最初没有重定向到$fileName,您可以看到现在有一个重定向。我想,当我承诺和推动的时候,我决定不接受它。
https://askubuntu.com/questions/1271230
复制相似问题