Verificando erros no script bash

1

Como posso modificar este script para executar condicionalmente o ${deleteOldBranchRemote} quando não houver erro executando ${getRename} ?

Now_hourly=$(date +%d%b%H%M)
#echo "$Now_hourly"

newrcName="rc$Now_hourly"
#rename rc to the new name
getRename="git branch -m $newrcName"
#Delete the old-name remote branch
deleteOldBranchRemote="git push origin --delete rc"
${getRename}
#if getRename has error then do not execute the following line
#if [ $noErrorSomehowIneedToCheckForErrors ]
  #then
    ${deleteOldBranchRemote}
#fi
    
por P.Brian.Mackey 03.09.2016 / 19:14

1 resposta

2

Você pode escrever assim:

if git branch -m $newrcName; then
    git push origin --delete rc
fi

O segundo comando é executado somente quando o primeiro comando termina com um código de saída 0 que indica sucesso.

Você pode obter mais informações sobre a palavra-chave if executando help if . Exemplo de saída do meu sistema (Bash 4.3.46 (1) -release):

if: if COMMANDS; then COMMANDS; [ elif COMMANDS; then COMMANDS; ]... [ else COMMANDS; ] fi
Execute commands based on conditional.

The 'if COMMANDS' list is executed.  If its exit status is zero, then the
'then COMMANDS' list is executed.  Otherwise, each 'elif COMMANDS' list is
executed in turn, and if its exit status is zero, the corresponding
'then COMMANDS' list is executed and the if command completes.  Otherwise,
the 'else COMMANDS' list is executed, if present.  The exit status of the
entire construct is the exit status of the last command executed, or zero
if no condition tested true.

Exit Status:
Returns the status of the last command executed.

Se você quiser saber o código de erro, pode lê-lo em $ ?. Bash armazena o código de saída do último comando executado nesta variável. Você pode armazená-lo em uma variável para usá-lo mais tarde:

git branch -m $newrcName
BRANCH_EXIT_CODE=$?
echo "git branch -m $newrcName exit code was $BRANCH_EXIT_CODE"
# $? now contains the exit code of the preceding echo
if [ $BRANCH_EXIT_CODE -eq 0 ]; then
    git push origin --delete rc
fi
    
por 03.09.2016 / 19:29

Tags