私はBashを使ってアクションを自動化すると、UNIXコマンドの戻り値を使って次のようなことをテストすることがよくあります:ファイルに文字列がある(grep)か、プロセスが実行中(ps aux + grep) 。
これは例ですが、grepは一致するものがない場合は1を返し、少なくとも1つの結果がある場合は0を返します。bashリターンコードを使用してプログラムするのは良い方法ですか?
$ ps aux | grep process_that_doesntexist | grep -v grep
$ echo $?
1
$ ps aux | grep init | grep -v grep
root 1 0.0 0.1 135188 6660 ? Ss 01:43 0:00
$ echo $?
0
プログラミングの方法は悪いですか?このように書かれたbashスクリプトは実稼働サーバー上で実行する必要がありますか?
ありがとうございました。
終了ステータスは、使用する方法とまったく同じです。 – chepner
@chepner、理想的には、 '$? 'を参照するのではなく、条件付きで評価するのが理想的です。 –
ところで、サービスの実行を確実にする責任があるソフトウェアを記述している場合は、[ProcessManagement](http://mywiki.wooledge.org/ProcessManagement)のセクション3.2を参照してください。 - ほぼすべてのオペレーティングシステムに組み込まれた専用のツールが用意されています。 –