これらのコマンドをより直接的に読み取ることができる方法は何ですか?
なぜ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演算子を理解しようとすると、&&
少なくとも私にとっては混乱します。なぜなら、奇妙な種類の逆論理で終わるからです。||