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"
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?
Tags bash