siery Asked: 2018-03-21 17:53:06 +0800 CST2018-03-21 17:53:06 +0800 CST 2018-03-21 17:53:06 +0800 CST -eq:预期一元运算符,shell 参数解析 772 在将 shell 参数与字符串进行比较时出现此错误。如果代码如下所示: online=true if [ "$2" -eq '-o' ] then online=false fi echo $online 然后对于例如输入,我得到了这些结果: $ ./currency.sh 2 -o ./currency.sh: line 13: [: -o: integer expression expected true bash shell 1 个回答 Voted Best Answer Vlastimil Burián 2018-03-21T21:05:34+08:002018-03-21T21:05:34+08:00 在这一行: if [ "$2" -eq '-o' ] 您使用了算术运算符-eq,它将第二个参数作为数字。 自然,它仅因这个原因而失败。 比较字符串时,可以使用POSIX =运算符: if [ "$2" = '-o' ] 请注意,这个版本应该在所有 shell 中工作,因为它是由POSIX (Portable Operating System Interface)定义的。 如果您想要Bash特定版本: if [[ "$2" == '-o' ]] 请注意,此版本仅适用于Bash(Bourne-again shell)等。 相反,双括号[[ .. ]]和==运算符都只在Bash中定义,在其他 shell 中不起作用。
在这一行:
您使用了算术运算符
-eq
,它将第二个参数作为数字。自然,它仅因这个原因而失败。
比较字符串时,可以使用POSIX
=
运算符:请注意,这个版本应该在所有 shell 中工作,因为它是由POSIX (Portable Operating System Interface)定义的。
如果您想要Bash特定版本:
请注意,此版本仅适用于Bash(Bourne-again shell)等。
相反,双括号
[[ .. ]]
和==
运算符都只在Bash中定义,在其他 shell 中不起作用。