非常に単純なスクリプトがあります。
test.sh
_EXECUTE_METHOD () {
exit 1
}
_EXECUTE_METHOD
ERROR_CODE=$?
if [[ $ERROR_CODE -eq 1 ]]; then
echo "Got error"
exit 0
fi
このスクリプトexit 1
は、関数内で実行されるとすぐに終了します。この終了ステータスを関数から取得し、メインスクリプトで処理したいと思います。
私はset -e
&を試しましたがset +e
、まだ成功していません。return
ステートメントは使用できません。
実際の出力:
$ sh test.sh
$ echo $?
1
$
実際の出力:
$ sh test.sh
Got error
$ echo $?
0
$
関数内ではreturn
なく、次を使用する必要がありexit
ます。
_EXECUTE_METHOD () { return 1; }
_EXECUTE_METHOD
ERROR_CODE=$?
if [[ $ERROR_CODE -eq 1 ]]; then echo "Got error"; fi
exit
現在のシェルを終了します。使用する必要がある場合は、次のようにexit
この関数をスクリプトまたはサブシェルに配置します。
declare -fx _EXECUTE_METHOD
_EXECUTE_METHOD () { exit 1; }
( _EXECUTE_METHOD; )
ERROR_CODE=$?
if [[ $ERROR_CODE -eq 1 ]]; then echo "Got error"; fi
(..)
サブシェルで関数を実行するため、サブシェルexit
のみを終了します。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加