명령을 인수로 받아들이고 명령을 실행하는 bash 스크립트에 함수를 작성하려고 합니다. 명령이 0이 아닌 값으로 종료되면 스크립트가 중단됩니다.
문서:command_wrapper.sh
#!/usr/bin/env bash
function exec_cmd() {
local command=${1}
$command || exit # run the command if $? is 1 exit
if [[ $? -eq 1 ]] # AGAIN if $? is 1 exit
then
echo "command failed"
exit
fi
return 0
}
exec_cmd "grep -R somsomeoemoem ." # call the function, passing a
# command that will exit with 1
echo "rest of script running"
불러라:
% ./command_wrapper.sh
./command_wrapper.sh:exec_cmd "grep -R somethingyouwillneverfind ."
rest of script running
0이 아닌 종료로 함수를 실행한 후 스크립트가 계속 실행됩니다. 이유는 무엇입니까? 실패 시 오류가 발생하면서
이 명령이 종료되도록 하려면 어떻게 해야 합니까 ?$command
답변1
귀하의 기능은 설계된 대로 작동하지만 문제는 귀하의 가정이 올바르지 않다는 것입니다. grep -R somsomeoemoem .
오류가 발생하여 종료되지 않습니다.
함수가 종료되는지 확인하려면 다음 명령을 사용해 보세요.
exec_cmd "false"