
コマンドの結果としてローカル変数を宣言し、コマンドの戻り状態をキャプチャできるようにしたいです。
このような:
#!/bin/ksh
typeset -r command_output=$(command)
typeset -r return_status=$?
echo "$return_status" # always 0
上記のコードスニペットの問題は、コマンドが別のステータスコードで終了しても、return_statusが常にゼロであることです。
誰でも私を助けることができますか?
答え1
問題は、typeset
返品ステータスが生成されることです。このコード(つまり、同じ宣言に2つの割り当て)が私にとって効果的です。
typeset -r command_output=$(command) return_status=$?
return_status
読み取り専用ではなく書き込み可能な状態を維持するには、次のようにします。
typeset command_output=$(command) return_status=$?
typeset -r command_output
(つまり、後続のコマンドで読み取り専用変数を宣言します。)