GNU/Linux >> Linux の 問題 >  >> Linux

Linux grep リターン コード

man grepによると ページ、-c フラグは

<ブロック引用>

-c, --count 通常の出力を抑制します。代わりに、入力ファイルごとに一致する行の数を出力します。

したがって、表示されているのは一致の数であり、 grep の終了コードと混同しないでください マッチ。コード 1 入力から一致する行がないためです。

他のケースを見てください。

echo 'No' | grep -c No
1

echo $?
0

EXIT CODES についても読む man grep で ページ、

<ブロック引用>

終了ステータス 通常、行が選択されている場合の終了ステータスは 0、行が選択されていない場合は 1、エラーが発生した場合は 2 です。


grep で何も一致しなかったため、終了コードは 1 です。

<ブロック引用>

終了ステータス選択した行が見つかった場合、終了ステータスは 0 であり、見つからない場合は 1 です。エラーが発生した場合、終了ステータスは 2 です (注:POSIX エラー処理コードは '2' 以上をチェックする必要があります)。

'Total' のカウントが 0 であるため、出力は 0 です。これは -c オプションによるものです:

<ブロック引用>

-c, --count 通常の出力を抑制します。代わりに、入力ファイルごとに一致する行の数を出力します。 -v, --invert-match オプション (下記参照) を使用すると、一致しない行をカウントします。 (-c は POSIX で指定されています。)

終了コード 0 を強制したい場合は、 || true を追加するだけです あなたの命令に:

echo 'Total' | grep -c No || true

Linux
  1. プロセスが終了したときのデフォルトの終了コード?

  2. Grepはtrue/falseを返すことができますか、それとも代替方法がありますか?

  3. Linuxgrepコマンドを使用する

  1. Linuxgrepコマンド

  2. Linux の Bash 終了コードとは

  3. Linux カーネルモジュールのコーディング方法は?

  1. Linuxgrepコマンドの使用方法

  2. Linuxでの14のGrepコマンドの例

  3. grep -q でコード 141 を終了するのはなぜですか?