有时候,原来运行得好好的 shell 程序,换个平台就运行不了,例如下面 shell 程序。
在 Ubuntu 上运行,会出现如下的错误:
这是因为 shell 脚本开头使用 #!/bin/sh
,而不是 #!/bin/bash
。而 /bin/sh
使用的是 dash,dash 中默认的判断语句是 =
,而不是 bash 使用的 ==
。
解决方法是直接使用 =
符号进行判断,但这样做可能会导致该脚本在其他平台无法正常运行(例如不支持 dash 的嵌入式平台)。为了更好地兼容,可以在 shell 脚本开头使用 #!/bin/bash
,或者使用下面命令将系统默认的 shell 链接由 dash 改为 bash。
选择“否”即可。