检查 bash 脚本中的错误

检查 bash 脚本中的错误

如何修改此脚本以在${deleteOldBranchRemote}执行没有错误时有条件地执行${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

答案1

你可以这样写:

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

因此,只有当第一个命令以退出代码 0 结束(表示成功)时,才会执行第二个命令。

您可以通过运行来获取有关 if 关键字的更多信息help if。我的系统的输出示例(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.

如果你想知道错误代码,可以从 $? 读取。 Bash 将最后执行的命令的退出代码存储在该变量中。您可以将其存储在变量中以便稍后使用:

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

相关内容