Shell 判断语句出错 [: ==: unexpected operator
Posted 阿基米东
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Shell 判断语句出错 [: ==: unexpected operator相关的知识,希望对你有一定的参考价值。
有时候,原来运行得好好的 shell 程序,换个平台就运行不了,例如下面 shell 程序。
#!/bin/sh
if [ $1 == "hello" ]; then
echo "Well done!"
fi
在 Ubuntu 上运行,会出现如下的错误:
[: ==: unexpected operator
这是因为 shell 脚本开头使用 #!/bin/sh
,而不是 #!/bin/bash
。而 /bin/sh
使用的是 dash,dash 中默认的判断语句是 =
,而不是 bash 使用的 ==
。
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 5月 28 20:16 /bin/sh -> dash
解决方法是直接使用 =
符号进行判断,但这样做可能会导致该脚本在其他平台无法正常运行(例如不支持 dash 的嵌入式平台)。为了更好地兼容,可以在 shell 脚本开头使用 #!/bin/bash
,或者使用下面命令将系统默认的 shell 链接由 dash 改为 bash。
sudo dpkg-reconfigure dash
选择“否”即可。
以上是关于Shell 判断语句出错 [: ==: unexpected operator的主要内容,如果未能解决你的问题,请参考以下文章