前のコマンドが成功した場合は1つのコマンドを実行し、そうでない場合は別のコマンドを実行する方法 質問する

前のコマンドが成功した場合は1つのコマンドを実行し、そうでない場合は別のコマンドを実行する方法 質問する

プロセス ( と呼ばれるsome_process) がサーバー上で実行されているかどうかを確認しようとしています。実行されている場合は echo 1、そうでない場合は echo 0 です。

これは私が使用しているコマンドですが、部分的にしか機能しません (詳細は下記を参照)。スクリプトを 1 行で記述する必要があることに注意してください。

ps aux | grep some_proces[s] > /tmp/test.txt && if [ $? -eq 0 ]; then echo 1; else echo 0; fi

注: in[s]は、それ自体が返されるのをsome_proces[s]防ぐためのものですgrep

some_processが実行中の場合は"1"エコーされますが、これは問題ありません。ただし、some_processが実行中でない場合は何もエコーされません。

ベストアンサー1

明示的にチェックする必要はありません$?。次のようにするだけです:

ps aux | grep some_proces[s] > /tmp/test.txt && echo 1 || echo 0 

これは echo が失敗しないことに依存していますが、これは必ずしも保証されているわけではありません。これをより確実に記述する方法は次のとおりです。

if ps aux | grep some_proces[s] > /tmp/test.txt; then echo 1; else echo 0; fi

おすすめ記事