加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

如何语法检查可移植的POSIX shell脚本?

发布时间:2020-12-15 22:46:24 所属栏目:安全 来源:网络整理
导读:参见英文答案 How do I syntax check a Bash script without running it?????????????????????????????????????7个 当第一个参数提供/ bin / true时,以下shell脚本执行良好,但在执行期间可能会因语法错误而失败! #!/bin/shif $1 ; then exit; fi/tmp/asdf A
参见英文答案 > How do I syntax check a Bash script without running it?????????????????????????????????????7个
当第一个参数提供/ 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可能有类似的问题.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读