-n 不执行;读取命令并检查语法,但不执行它们。
您能否举例说明我们何时需要“不执行“哪一个是 Bash 选项之一?
有人可以给我一个如何正确使用此选项的例子吗?
答案1
file
首先,确保您的目录中没有指定的文件。
创建这个syntaxErr.bash
:
echo X > file
for i in a b c;
echo $i >> file
done
正如您所看到的,它错过了do
for 循环之后的内容。看看现在会发生什么:
$ bash -n syntaxErr.bash
syntaxErr.bash: line 4: syntax error near unexpected token `echo'
syntaxErr.bash: line 4: ` echo $i >> file'
$ cat file
cat: file: No such file or directory
$ bash syntaxErr.bash
syntaxErr.bash: line 4: syntax error near unexpected token `echo'
syntaxErr.bash: line 4: ` echo $i >> file'
$ cat file
X
因此,您无需实际执行命令即可获得语法错误反馈。如果您正在做一些非常重要的事情,您可能不想在所有语法错误都得到纠正之前运行脚本。
注意:这ctafind.bash
确实不是包含语法错误:
echo X > file
cta file
find . -type z
cat
拼写错误cta
,并且没有 z 类型的文件find
。如果您使用该标志运行 Bash,则不会报告错误-n
。
$ bash -n ctafind.bash
$ bash ctafind.bash
ctafind.bash: line 2: cta: command not found
find: Unknown argument to -type: z
毕竟,Bash 既无法事先知道是否有可执行文件cta
,也无法知道外部命令可接受的选项是什么。