Capture exit status from function in shell script -
i have simple script.
test.sh
_execute_method () { exit 1 } _execute_method error_code=$? if [[ $error_code -eq 1 ]]; echo "got error" exit 0 fi
this script terminate when exit 1
executed inside function. want capture exit status function , handle in main script.
i have tried set -e
& set +e
, still no success. can not use return
statement.
actual output:
$ sh test.sh $ echo $? 1 $
actual output:
$ sh test.sh got error $ echo $? 0 $
you need use return
instead of exit
inside function:
_execute_method () { return 1; } _execute_method error_code=$? if [[ $error_code -eq 1 ]]; echo "got error"; fi
exit
terminate current shell. if have use exit
put function in script or sub shell this:
declare -fx _execute_method _execute_method () { exit 1; } ( _execute_method; ) error_code=$? if [[ $error_code -eq 1 ]]; echo "got error"; fi
(..)
execute function in sub-shell hence exit
terminate sub-shell.
Comments
Post a Comment