コマンドの結果としてローカル変数を宣言し、コマンドの戻りステータスをキャプチャできるようにしたいと思います。
このようなもの:
#!/bin/ksh
typeset -r command_output=$(command)
typeset -r return_status=$?
echo "$return_status" # always 0
上記のスニペットコードの問題は、コマンドが別のステータスコードで終了した場合でも、return_statusが常に0になることです。
私を助ける人はいますか?
問題は、typeset
がリターンステータスを作成することです。このコード(つまり、同じ宣言内の両方の割り当て)は私のために機能します:
typeset -r command_output=$(command) return_status=$?
return_status
を書き込み可能(読み取り専用ではない)に保つには、次の操作を実行できます。
typeset command_output=$(command) return_status=$?
typeset -r command_output
(つまり、読み取り専用変数を後続のコマンドとして宣言します)。