case in $angreifenQ
j) enemieHealth=$(( $enemieHealth - $weaponDamage ));;
n) echo "Du bist ein Franzose"
echo "Warum spielst du eigentlich das Spiel?";;
esac
if $(( $enemieHealth <= 0 )); then
echo "Der Gegner ist gestorben!"
elif $(( $enemieHealth > 0 )); then
echo "Der Gegner hat noch ${enemieHealth} Leben!"
fi
为什么我会收到这些错误?
./anfang.sh: line 125: unexpected EOF while looking for matching `"'
./anfang.sh: line 127: syntax error: unexpected end of file
答案 0 :(得分:1)
我不知道您的错误消息所指的是哪一行,但据我们所知,没有遗漏"
。您可以先尝试的是纠正上述错误。
首先,case
的正确语法应为:
case $angreifenQ in
不
case in $angreifenQ
要比较数字,请移除$
:
if (( $enemieHealth <= 0 ))
...
elif (( $enemieHealth > 0 ))
正如评论中所建议的那样,您应该考虑使用shellcheck.net在脚本中报告明显错误,因为它缺少打开或关闭"
。
答案 1 :(得分:1)
您提供的代码存在一些问题,首先是错误放置@SLePort首先提到的in
关键字。 bash
没有向您报告这些内容并不是由您提供的代码解释的,也不是您报告的错误消息实际上看到的。
另一方面,您收到的是您报告的错误消息,而不是我期望从您的代码中获得的错误消息,这与您提供的内容之前存在无法匹配的"
字符一致,就像您的第一个消息描述。实际上,我可以通过在您的代码前加"
前缀来获取您的消息。
然而,比迷路"
本身更可能是一个带引号的字符串,您从该字符串中省略了尾随"
。从你提交的代码向后看,找到这样的东西。如果你有一个带有shell脚本语法着色的文本编辑器,那么这可能有助于加快搜索速度。