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
Googleマップがナビウォークに!?

Googleマップでとうとうドライブルートを検索できるようになったようです。 G …

no image
標準出力にタイムスタンプを付与する@Linux

シェルスクリプトの実行結果をファイルに保存する時など、タイムスタンプが欲しい時が …

no image
Linuxのinitrd – イニシャルラムディスク(initial ram disk)の展開方法

Linuxカーネルはモジュール型であるため、Linux起動時に必要なモジュールは …

no image
Acer AS1410 の無線LAN 11n設定

Acer AS1410購入しました。ついにで無線LANが11nに対応しているので …

no image
Google IME (mozc) のインストール@Fedora 17

Google製のLinux用IME、Mozc をインストールしてみた。 # yu …

no image
Windowsが勝手に再起動するのを防止@Windows Vista

Windows Vistaで、Windowsを更新して、ほったらかしていると勝手 …

no image
CDやDVDの中身が見れない@Windows Vista

最近悪名高いWindows Vistaを使っているのですが、一通り設定や必要そう …

no image
ショートカットが動かない@Thunderbird 2.x with Windows

Windows上のThunderbirdでは、Ctrlを使わないショートカット、 …

no image
VirtualBox 5で、USBメモリ全体をディスクとして使う@Windows 10

管理者権限でWindowsのコマンドプロンプトを起動し、以下のようにUSBメモリ …

GO言語 1.12をインストール@Ubuntu 18.04

GO言語1.12がそろそろリリースされるようですが、2/25にリリースされたので …