参见英文答案 >
How do I syntax check a Bash script without running it? 7个
当第一个参数提供/ bin / true时,以下shell脚本执行良好,但在执行期间可能会因语法错误而失败!
当第一个参数提供/ bin / true时,以下shell脚本执行良好,但在执行期间可能会因语法错误而失败!
#!/bin/sh if $1 ; then exit; fi /tmp/asdf <<< ASDF # Something with Syntax error in POSIX
当然,静态检查可以避免一些语法错误(如果不是全部?)?如何静态检查给定的Shell Command Language脚本在语法上是否有效?
编辑:检查Bash脚本中的语法错误已在this question中得到解答.
编辑#2:注意Bash fails正确检查语法是否遵守POSIX,即使使用除-n之外的B和–posix标志执行也是如此.
解决方法
所有与POSIX兼容的
Shell Command Language shell都支持
set -n
内置,可用于检查脚本的语法.因此可以预先添加
set -n
对你的代码进行语法检查.另请注意,还需要标准sh实用程序来支持命令行-n标志,该标志与使用set -n具有相同的语义. Bash和可能的其他shell也支持此命令行标志.因此,您只需运行以下语法检查脚本:
sh -n yourScriptFilename.sh
警告:这并不能保证脚本具有完全POSIX兼容的语法.例如,Bash允许bashisms(例如数组和c {a,u} t)被忽略,即使在调用sh时除了-n之外还使用–posix(和/或B)命令行选项.其他shell可能有类似的问题.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。