我有一些用Bash编写的脚本,现在需要将它们转换成Shell脚本。我知道Bash是Shell规范的扩展实现,因此,我想寻找一些关于Bash扩展的规范,也就是说,Bash中有哪些不属于Shell规范的部分,这样我就可以查看我的脚本并进行适当的修改了。 是否有这样的文档? 或者,对于如何进行转换的任何其他建议都将不胜感激。
#!/bin/sh
作为 shebang)可以捕获许多 bash 语法。如果没有被捕获到,应该将其作为项目的错误报告。如果实现不是很困难,它们应该会在合理的时间内被添加。作者相当负责。==
而不是=
。
$ cat b.sh #!/bin/sh
VAR=foo if [ $VAR == bar ]; then echo 'bar!' fi
$ checkbashisms b.sh 可能存在bashism,位于b.sh第4行(应该是“b = a”): if [ $VAR == bar ]; then
/bin/sh
而不是/bin/bash
吗? - Christophe Vu-Brugier
#!/bin/sh
声明的脚本在使用shellcheck
工具时可以捕捉到许多仅适用于bash
的语法。这些脚本有多大?你需要它们具备多高的可移植性? - Etan Reisnerbash
是其中之一。你是在特别谈论与Bourne Shell (sh
)的兼容性吗? - Phylogenesis