Bash Shell "noexec"オプションの使用目的

Bash Shell "noexec"オプションの使用目的

-n 実行しない;コマンドを読み、構文を確認しますが、実行しません。


「必要な場合の例を挙げることができますか?実行されない「Bashオプションの1つは何ですか?

誰かがこのオプションを正しく使用する方法の例を教えてください。

答え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スペルが間違っており、ctazタイプファイルがありません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、外部コマンドにどのオプションが許可されるかを事前に知る方法はありません。

関連情報