1. ホーム
  2. bash

[解決済み] 入力が一致しないときに grep がエラーを返すのを防ぐ

2023-07-21 22:48:22

質問

bashスクリプトで、あるプログラムがすでに実行されているかどうかをチェックするコードを書きたいと思っています。 私はバーが実行されているかどうかを検索するために、次のようになります。

 foo=`ps -ef | grep bar | grep -v grep`

 grep -v grep

の部分は、"grep bar"がpsの結果に考慮されないことを保証するためのものです。

bar が実行されていないとき、foo は正しく空です。しかし、私の問題は、このスクリプトが

 set -e

は、何らかのコマンドがエラーを返した場合にスクリプトを終了させるためのフラグです。 バーが実行されていないときは、"grep -v grep" は何もマッチせず、grep はエラーを返すことが判明しています。私は、-q または -s を使用してみましたが、無駄でした。

何か解決策はないでしょうか?Thx

どのように解決するのですか?

もちろんです。

ps -ef | grep bar | { grep -v grep || true; }

あるいは、さらに

ps -ef | grep bar | grep -v grep | cat