web-dev-qa-db-ja.com

teeにパイプされたプロセスの終了コードを取得するにはどうすればよいですか?

私はこのようなbashコードを持っています(Mac OS X):

foo.sh | tee foo.log echo $?

問題はその$ですか? foo.shの終了コードではなく、teeの終了コードが含まれています。 foo.shの終了コードを取得するにはどうすればよいですか?

6
bluesmoon

環境変数$PIPESTATUSは、パイプライン内のすべてのプロセスの終了ステータスの配列です。

7
bluesmoon

サブシェルも使用します。

tm@hoegaarden:~$ cat foo.sh
#!/bin/bash

echo "stuff and junk"

exit 123
tm@hoegaarden:~$ (./foo.sh ; echo $? > ./retval ) | tee output
stuff and junk
tm@hoegaarden:~$ cat retval 
123
3
Tom Maher