嗯,这其实不是个问题,但是如果你有shell脚本从CentOS迁移到Ubuntu的话,那么就需要考虑了。
Ubuntu默认的sh是dash,以下是GPT给出的dash和bash的区别:
-
数组操作:Bash 支持数组,可以方便地存储和操作多个元素。Dash 不支持数组操作。
-
关联数组:Bash 支持关联数组,允许使用字符串作为索引。Dash 不支持这一特性。
-
扩展的通配符:Bash 提供了更多的通配符扩展功能,如
{a,b}
形式的扩展。Dash 不支持这些扩展。 -
函数的本地变量:在 Bash 中,函数可以具有本地变量,这些变量的作用域仅限于函数内部。Dash 不支持在函数中定义本地变量。
-
进程替换:Bash 允许使用
<()
和>()
语法进行进程替换,Dash 不支持这种语法。 -
内置命令:Bash 具有一些与Shell相关的内置命令,这些内置命令在 Dash 中可能不完全一样或不支持。
-
高级的扩展功能:Bash提供了更多高级的扩展特性,如
coproc
命令、source
命令等,这些在 Dash 中可能不支持。 -
处理信号:Bash 允许在脚本中处理信号,而 Dash 对信号的处理支持有限。
实际情况是[[判定在dash是不能运行的,为了规避这样的情况,需要把默认的sh改为dash,具体方法如下:
ln -sf /bin/bash /bin/sh
参考资料
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。