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
ATOK 2009@Windows 7

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

no image
ウィンドウが勝手に最大化@Windows 7

Windows 7で、ウィンドウをはしっこに移動したりすると、最大化してしまいす …

no image
プロセスの優先度@CetnOS 5.5

Linuxのプロセス優先度には、大きく分けて2つあります。 静的優先度 (リアル …

no image
Windows 10の強制アップデート・再起動を無効にする

Windows 10 Proでは、Windowsが強制的にアップデートされ、ほっ …

no image
Galaxy SIIIのカメラのシャッター音を消す@Android 4.1.2

root 化した端末必須です。 root 権限で実行でき、/system を読み …

no image
sendip

ネットワークのテストをしたいとき、任意のパケットを送出したい場合があります。Wi …

no image
プログラミングコンテストの模擬練習(ババ抜き)を解いてみた

以下で紹介されていたプログラミングコンテストの模擬練習問題(ババ抜き)をpyth …

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

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

no image
ドメイン名一覧をドメイン毎にソート(文字列の反転)@bash

Webページのアクセス解析をドメイン毎に集計してみようと思って、IPを抜き出しホ …

no image
rdesktopの改造@Debian etch

LinuxからWindowsのリモートデスクトップに接続するコマンドです。 De …