bash: Como posso detectar se o comando anterior falhou e, em seguida, sair - de dentro de uma função?

1

Estou tentando escrever uma função em um script bash que aceita um comando como um argumento, executa o comando - AND - se o comando diferente de zero foi encerrado, aborte o script:

arquivo

: 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"

ligue para ele:

% ./command_wrapper.sh
./command_wrapper.sh:exec_cmd "grep -R somethingyouwillneverfind ."
rest of script running

o script continua depois que a função é executada com um comando que sai de zero - por quê?
Como posso obter esse comando para a saída de erro quando $command falha?

    
por the_velour_fog 26.03.2017 / 23:40

1 resposta

5

Sua função funciona como projetada, mas o problema é que sua suposição é incorreta. grep -R somsomeoemoem . não sai com erro.

Experimente este comando para ver a função a sair:

exec_cmd "false"
    
por 26.03.2017 / 23:54

Tags