私はこのようなbashコードを持っています(Mac OS X):
foo.sh | tee foo.log echo $?
問題はその$ですか? foo.shの終了コードではなく、teeの終了コードが含まれています。 foo.shの終了コードを取得するにはどうすればよいですか?
環境変数$PIPESTATUS
は、パイプライン内のすべてのプロセスの終了ステータスの配列です。
サブシェルも使用します。
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