为什么在我的bash脚本中查找匹配的“”错误时会出现语法错误和意外的EOF?

时间:2017-03-08 19:47:57

标签: linux bash shell syntax echo

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

2 个答案:

答案 0 :(得分:1)

我不知道您的错误消息所指的是哪一行,但据我们所知,没有遗漏"。您可以先尝试的是纠正上述错误。

首先,case的正确语法应为:

case $angreifenQ in

case in $angreifenQ

要比较数字,请移除$

if (( $enemieHealth <= 0 ))
...
elif (( $enemieHealth > 0 ))

正如评论中所建议的那样,您应该考虑使用shellcheck.net在脚本中报告明显错误,因为它缺少打开或关闭"

答案 1 :(得分:1)

您提供的代码存在一些问题,首先是错误放置@SLePort首先提到的in关键字。 bash没有向您报告这些内容并不是由您提供的代码解释的,也不是您报告的错误消息实际上看到的。

另一方面,您收到的是您报告的错误消息,而不是我期望从您的代码中获得的错误消息,这与您提供的内容之前存在无法匹配的"字符一致,就像您的第一个消息描述。实际上,我可以通过在您的代码前加"前缀来获取您的消息。

然而,比迷路"本身更可能是一个带引号的字符串,您从该字符串中省略了尾随"。从你提交的代码向后看,找到这样的东西。如果你有一个带有shell脚本语法着色的文本编辑器,那么这可能有助于加快搜索速度。