Mazn.net

やってみて 調べてみて 苦労しなけりゃ 箱は動かじ

パイプでつないだコマンドの戻り値を調べる@bash

      2011/10/08

シェルスクリプトで、実行したコマンドの戻り値を知る方法は有名ですよね。

以下のように、$? で知ることができます。
※false は つねに 1 を返すコマンドです。

# false; echo $?
1

しかし、パイプ “|” でつないだ場合、$? で知ることができるのは、最後のコマンドの結果だけです。

# true | true | false; echo $?
1

1番目や2番目の結果を知りたい場合どうすればよいかというと、PIPESTATUS とう配列をみてあげるとわかります。

例えば、上記のコマンド結果を以下のように表示してあげると、PIPESTATUS[0] には、最初のtrueの結果が、PIPESTATUS[1]には、2番目のtrueの結果が、PIPESTATUS[2]には3番目のfalseの結果がわかります。

# true | true | false; echo ${PIPESTATUS[0]}
0
# true | true | false; echo ${PIPESTATUS[1]}
0
# true | true | false; echo ${PIPESTATUS[2]}
1

 - IT技術, プログラミング

336px

Message

メールアドレスが公開されることはありません。

  関連記事

no image
rubyのexitの終了コード@1.8.5 and 1.8.7

最近rubyを使い始めて、いざプログラムを書いたところ、終了ステータスがうまく戻 …

no image
Java スクリプト API

Javascriptではありません。Java スクリプト APIです。 JRub …

no image
TCP Wrapper の設定チェック@Linux

昔からあるアクセス制限の方法として、TCP Wrapperがあります。 /etc …

no image
Googleの検索結果に近所の情報が表示される件

いつ頃からか、Googleで普通に検索すると、近所の情報が表示されるようになりま …

no image
ATOK 2009@Windows 7

Windows7 に ATOK 2009を入れてみた。何事もなく普通に使えました …

no image
ck@cygwin 1.7

cygwin 1.7 より前では、ターミナルエミュレータにckを使っていたのです …

no image
apt系コマンド

インストールの管理にDebian系ではaptを使いますが、すぐ忘れてしまうのでメ …

no image
Firefox でファイルをダウンロードしようとすると、ダウンロードダイアログが開かない@Windows7 x64 + Firefox 3.5

Firefox でファイルをダウンロードしようとすると、なぜか保存ダイアログが開 …

no image
gitで複数のコミットを一つにしてマージする

自分の開発ブランチではこまめにコミットしたいけど、リリース用のブランチにはもっと …

no image
キーボードレイアウト、ロケール変更@Ubuntu 14.04 server on VMware Player

VMwareの簡易インストールはOSのインストールが簡単で便利ですが、日本時間に …