2

シェル スクリプトを作成しrmls、 などのコマンドをいくつか使用しています。これらのコマンドが失敗した場合に備えて、リターン ステータス '$?' をチェックしています。. しかし、スクリプトに構文エラーがある場合、どうすればエラーステータスを取得できますか? 基本的に、「source」コマンドを使用して、このスクリプトを別のスクリプトから取得します。したがって、ソースのスクリプトに構文エラーがある場合は、それをコンソールに表示したいと思います。そのステータスを取得する方法はありますか?シェルで構文エラーでスクリプトを実行したところ、「missing [」のようなエラーが発生しましたが、実行echo $?するとステータスとして 0 が返されましたが、これは動作ですか? スクリプトに構文エラーがあるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

2

-nソースを取得する前に、オプションを使用してシェル スクリプトの構文を確認できます。

bash -n somescript  # Works also for sh, ksh, zsh et al.

実際に実行しなくても somescript が構文的に問題ないかどうかがわかります。プログラムで:

if bash -n somescript; then
   . somescript
else
   printf '%s\n' "Uh-oh, somescript is not syntactically correct." >&2
fi
于 2012-10-09T10:01:17.957 に答える