bash: 이전 명령이 실패했는지 감지한 다음 함수 내부에서 종료하는 방법은 무엇입니까?

bash: 이전 명령이 실패했는지 감지한 다음 함수 내부에서 종료하는 방법은 무엇입니까?

명령을 인수로 받아들이고 명령을 실행하는 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"

관련 정보