web-dev-qa-db-ja.com

kshでのタイプセットとリターンステータス

コマンドの結果としてローカル変数を宣言し、コマンドの戻りステータスをキャプチャできるようにしたいと思います。

このようなもの:

#!/bin/ksh
typeset -r command_output=$(command)
typeset -r return_status=$?
echo "$return_status" # always 0

上記のスニペットコードの問題は、コマンドが別のステータスコードで終了した場合でも、return_statusが常に0になることです。

私を助ける人はいますか?

3
pierrefevrier

問題は、typesetがリターンステータスを作成することです。このコード(つまり、同じ宣言内の両方の割り当て)は私のために機能します:

typeset -r command_output=$(command) return_status=$?

return_statusを書き込み可能(読み取り専用ではない)に保つには、次の操作を実行できます。

typeset    command_output=$(command) return_status=$?
typeset -r command_output

(つまり、読み取り専用変数を後続のコマンドとして宣言します)。

3
Janis