grep コマンドを実行して結果を出力するスクリプトを実行したいと考えています。grep が 1 行を返すことを期待していますが、一致する行がない場合 (たとえば、grep されたファイルが存在しない場合) を処理したいと考えています。のようなものを実行する方法はありますか
line = grep ...
if line is empty
print "\n"
else
print line
必要なことは、grep の戻りコードを調べることだけです。
grep
行が一致した場合は 0 を返し、行が一致しなかった場合は 1 を返します。エラーが発生した場合は、1 より大きい値を返します。
$ echo "hi" | grep hi
hi
$ echo $?
0
$ echo "hi" | grep hello
$ echo $?
1
特定の状況 (bash スクリプトの場合など) では、ステータス 1 で終了しset -e
たくありません。これは、提供された式が一致しない場合です。grep
grep
したがって、 1 (またはそれ以上) の終了ステータスが、呼び出し元の端末またはスクリプトに戻されるのを防ぐにgrep
は、次を使用します。
grep "EXPR" FILE.txt || echo "No match found"
考えられる結果: