This question already has answers here:
How do I syntax check a Bash script without running it?
(9个答案)
5年前关闭。
当为第一个参数提供
是否可以通过静态检查避免某些语法错误(如果不是全部?)? 如何静态检查给定的Shell Command Language脚本在语法上是否有效?
编辑:在this question中回答了检查Bash脚本中的语法错误的问题。
编辑#2:请注意,即使使用
对您的代码进行语法检查。还请注意,还需要标准sh实用程序来支持命令行
警告:这不能保证脚本具有完全与POSIX兼容的语法。例如,除了在作为
(9个答案)
5年前关闭。
当为第一个参数提供
/bin/true
时,以下shell脚本执行良好,但在执行过程中可能会因语法错误而失败! #!/bin/sh
if $1 ; then exit; fi
/tmp/asdf <<< ASDF # Something with syntax error in POSIX
是否可以通过静态检查避免某些语法错误(如果不是全部?)? 如何静态检查给定的Shell Command Language脚本在语法上是否有效?
编辑:在this question中回答了检查Bash脚本中的语法错误的问题。
编辑#2:请注意,即使使用
+B
和--posix
标志执行时,Bash fails也可以正确检查语法是否符合POSIX。 最佳答案
所有与POSIX兼容的Shell Command Language shell 程序都支持内置 set -n
,可用于检查脚本的语法。因此有可能在前面
set -n
对您的代码进行语法检查。还请注意,还需要标准sh实用程序来支持命令行
-n
标志,该标志具有与使用set -n
等效的语义。 Bash和可能的其他Shell也支持此命令行标志。因此,您只需运行以下命令即可对脚本进行语法检查:sh -n yourScriptFilename.sh
警告:这不能保证脚本具有完全与POSIX兼容的语法。例如,除了在作为
c{a,u}t
调用--posix
的同时使用+B
(和/或-n
)命令行选项时,Bash允许bashisms(例如array和sh
)不被注意。其他 shell 可能有类似的问题。关于shell - 如何对便携式POSIX Shell脚本进行语法检查?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36887122/