Bash Shell“noexec”选项使用目的

Bash Shell“noexec”选项使用目的

-n 不执行;读取命令并检查语法,但不执行它们。


您能否举例说明我们何时需要“不执行“哪一个是 Bash 选项之一?

有人可以给我一个如何正确使用此选项的例子吗?

答案1

file首先,确保您的目录中没有指定的文件。

创建这个syntaxErr.bash

echo X > file
for i in a b c;
    echo $i >> file
done

正如您所看到的,它错过了dofor 循环之后的内容。看看现在会发生什么:

$ 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,也无法知道外部命令可接受的选项是什么。

相关内容