比较字符串时,可以使用POSIX =操作员:

比较字符串时,可以使用POSIX =操作员:

我在将 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

答案1

在这一行中:

if [ "$2" -eq '-o' ]

您使用了算术运算符-eq,它将第二个参数作为数字。

当然,仅仅因为这个原因它就失败了。


比较字符串时,可以使用POSIX =操作员:

if [ "$2" = '-o' ]

请注意,这个版本应该在所有 shell 中工作,因为它是由POSIX(便携式操作系统接口)

如果你想重击-具体版本:

if [[ "$2" == '-o' ]]

请注意,此版本仅适用于Bash(谍影重重 shell)和类似的。


相反,双括号[[ .. ]]==运算符都定义在重击仅在其他 shell 中不起作用。

相关内容