我有用Bash编写的脚本列表,现在我需要将它们转换为Shell脚本。我知道bash是Shell规范的扩展实现,因此,我正在寻找在Bash中实现的扩展的一些规范,即Bash中不属于Shell规范的部分,所以我可以通过我的脚本并进行适当的修改。 有没有这样的文件? 另外,任何其他建议如何做转换将不胜感激。将Bash脚本转换为Shell
回答
要将Bash脚本更改为POSIX compatible shell代码,您必须删除任何bashisms。虽然我不认为有任何工具可以可靠地处理全部 bashisms,您可以从checkbashisms
开始。
如果使用基于Debian的分布,则可以使用checkbashisms其由devscripts中包提供命令。
这里是由checkbashisms highlighed一个bash特定构建体(一个bashism)的例子:在一个测试用的==
代替=
。
$ cat b.sh #!/bin/sh VAR=foo if [ $VAR == bar ]; then echo 'bar!' fi
$ checkbashisms b.sh possible bashism in b.sh line 4 (should be 'b = a'): if [ $VAR == bar ]; then
我刚刚尝试了上面给出的示例脚本的checkbashisms,但没有得到任何结果。任何想法我做错了什么?这里是我运行的命令: $ checkbashisms test.sh,然后cli返回无输出, 其中test.sh包含上面给出的脚本。 – zuckermanori
@zuckermanori,你在shebang中使用'/ bin/sh'而不是'/ bin/bash'吗? –
是的,我做了@Christophe Vu-Brugier – zuckermanori
的shellcheck工具(与#!/bin/sh
一个家当)将赶上很多的bash-主义。
任何未被捕获的东西都应该作为对该项目的错误提交。如果他们不能执行,他们应该在合理的时间内添加。作者相当敏感。
- 1. 将csh脚本转换为bash脚本
- 2. 批量转换为Bash/Shell脚本转换器
- 3. 将Bash shell脚本转换为批处理文件
- 4. 如何将bash shell脚本转换为.bat文件?
- 5. 转换为ksh shell脚本
- 6. 将shell脚本转换为python程序
- 7. 将shell脚本转换为ruby数组
- 8. 将shell脚本转换为jar文件
- 9. 将批处理脚本转换为Shell
- 10. 将shell脚本转换为dmg
- 11. 将shell脚本转换为Objective-C CLI
- 12. 将电源shell脚本转换为C#
- 13. 将Perl + shell脚本转换为EXE
- 14. 将Mongo Shell脚本转换为SpringData/Java
- 15. 将Bash脚本转换为PowerShell
- 16. 将脚本从ksh转换为bash
- 17. 将Dockerfile转换为Bash脚本
- 18. Bash/Shell脚本
- 19. shell脚本BASH
- 20. Bash shell脚本
- 21. 函数失败 - shell脚本从Bash转换为Korn
- 22. 如何将shell脚本转换为Perl脚本?
- 23. 将shell脚本转换为.bashrc中的函数[shell退出]
- 24. shell脚本转换为大写
- 25. 为Mac OS X转换Linux shell脚本
- 26. 转换shell脚本Python脚本
- 27. 转换Bash脚本为OpenVMS语法
- 28. bash脚本到tcl脚本转换器
- 29. 将ant脚本转换为gradle脚本
- 30. 将VBA脚本转换为Unix脚本
[shellcheck](http://shellcheck.net)用'#!/ bin/sh' shebang应该会捕获许多bash-isms。这些脚本有多大?你究竟需要他们是多么便携? –
“壳牌规格”是什么意思?有许多不同的shell是'bash'是一个。您是否在谈论与Bourne Shell('sh')的兼容性,具体是? – Phylogenesis
他可能指的是[POSIX shell规范](http://pubs.opengroup.org/onlinepubs/9699919799/idx/xcu.html)。 – chepner