2016-03-25 17 views
1
(echo "123" | grep "xyz" > /dev/null) && echo $ 
(echo "123" | grep "123" > /dev/null) && echo $? 
  1. Command1には出力がありません。
  2. Command2は '0'を出力します。

grepのヘルプを参照してください。grepの終了値について

終了ステータス のgrepユーティリティが終了、次のいずれかの値:

0  One or more lines were selected. 
1  No lines were selected. 
>1 An error occurred. 

私は、 "式1 & &式2" について混乱を感じます。 expression1がtrueの場合、expression2が実行されます。そうですか?

grepが "123"と一致した場合、0を返します(0に等しい)。0を返した場合、expression1はfalseになります。なぜなら、expression1がfalseのときにが実行されたのですか?

答えて

1

0がfalseに等しいという仮定は正しくありません。それは逆です。 0は、grepのヘルプのように、コマンドが正常に実行されたことを意味します。したがって、ゼロ以外の終了ステータスはエラーとみなされ、したがってfalseとなります。 ifステートメントでよく使用されるtestコマンドの場合も同様です。

この点を念頭において、このスクリプトの結果は期待どおりです。

関連する問題