このコマンドはどういう意味ですか?

このコマンドはどういう意味ですか?

これらのコマンドをより直接的に読み取ることができる方法は何ですか?

なぜexit 255ダメなのexit 1

[ $# -eq 3 ] || { echo error ; exit 255 ; }

grep -q "string" && exit 0

ベストアンサー1

他の人はこれがコマンドライン引数の数であると述べた$#ので、あなたの質問でその部分を無視します。

与えられたcmd1 && cmd2、シェルが最初に実行されますcmd1。失敗すると、cmd1式全体が失敗します。成功すると、cmd1シェルは引き続き実行されますcmd2。次の場合、式全体が成功します。両方 cmd1成功しcmd2ました。したがって、この&&演算子はシェルコマンドに適用される段落ブールANDです。この演算子の使用は次のように置き換えることができます。

if cmd1
then
    cmd2
fi

与えられたcmd1 || cmd2、シェルが最初に実行されますcmd1。成功すると、式全体が成功します。それ以外の場合は、シェルが実行され、cmd2式の成功または失敗が決定されますcmd2。つまり、これはシェルコマンドに適用される段落ブールORです。このフォームを次のように置き換えることができます。

if ! cmd1
then
    cmd2
fi

私はこのフレーズを慎重に使用します成功/成功そして失敗/失敗する以上。シェルコマンドの場合、成功はプロセス終了状態 0 として定義されます。失敗はゼロ以外の状態です。しかし、終了状態でAND演算子を理解しようとすると、&&少なくとも私にとっては混乱します。なぜなら、奇妙な種類の逆論理で終わるからです。||

おすすめ記事