-1
文字列にgrep
を入力し、一致するものがある場合はフィールドを切り捨てます。問題は、一致するかどうかにかかわらず、コマンド$?
の出力は0です。これは奇妙です。あなたが見ることができるように、試合があるパイプラインでコマンドのステータスを確認する
$ R=`grep g09 tor1.sh | cut -d ' ' -f2`
$ echo $R
test
$ R=`grep g09 tor1.sh | cut -d ' ' -f2`
$ echo $?
0
をしかし$?
0は今、この参照されています:以下の出力を参照してください。ここで
$ R=`grep g09 tor.sh | cut -d ' ' -f2`
$ echo $R
$ R=`grep g09 tor.sh | cut -d ' ' -f2`
$ echo $?
0
を、G09のための一致はありませんが、$?
はまだあります0なぜ?
フォローアップの質問で@bishopが指摘したように、パイプラインがサブシェルで実行されているため、上記の '$ {PIPESTATUS [0]}'は正しい結果を得ません。あなたの例はそこに使用されているサブシェルがないので問題ありません。 – codeforester
非常に良い点@codeforester。 '$ {PIPESTATUS [0]} 'を正しく得るためにプロセス置換を使う答えを修正しました。 – anubhava