エラーコードを端末の外に伝播するにはどうすればよいですか?

エラーコードを端末の外に伝播するにはどうすればよいですか?

Bashスクリプト内の新しいターミナルウィンドウで起動されたプログラムのエラーコードを取得しようとしています。次のように単純化できます。

#!/bin/bash
urxvt -e bash -c "exit 4"
echo $?

出力:0

urxvtを呼び出すスクリプトから「4」にアクセスしたいです。どうすればいいですか? :)

ベストアンサー1

uxvrtAFAIKグラフィックターミナルには、実行中のプログラムの戻りコードを提供するユーティリティがありません。

私が考えることができる最良かつ最も簡単な方法は、内部でサブシェルを実行しbash(少し混乱しているようですが、私を信じてください)、内部で目的のプログラムを実行し、bash外部シェルを使用して戻りコードを処理することです。これは以下の通りです。 :

urxvt -e bash -c ' (exit 4) ; echo $? > error.code '

これで、ファイルから戻りコードを読み取ることができますerror.code

echoコードを返すと、urxvt数千秒後に閉じるウィンドウにコードが印刷されるため、一時ファイルが必要です。だからあなたは役に立つものを得ることはできません。

おすすめ記事