如何在 shell 中创建一系列命令,当出现错误时停止执行

如何在 shell 中创建一系列命令,当出现错误时停止执行

我通常的 git 部署工作流程如下:

[在 master 分支上]

git pull
git push
git checkout production
git pull
git merge master
git push

是否可以创建一个函数来执行所有这些命令,但如果其中一个命令返回错误(即合并冲突),它就会立即停止?

答案1

使用 && 仅当前一个命令成功完成后才会执行以下命令。$? 返回最新命令的状态命令。

function git_checkout()
{
 git pull && git push && git checkout production && git pull && git merge master && git push
 return $?
}

答案2

-e如果 bash 在命令链中的最后一条命令中看到非零退出代码,则在 bash 中进行设置将导致其退出。

#!/bin/bash -e
# or `set -e`
false
echo 'I will never run!'

答案3

使用ERR_EXIT哪个将导致你的脚本在任何错误时退出:

emulate -L zsh # do not change the environment outside the script

# If a command has a non-zero exit status, execute the ZERR  trap,
# if set, and exit.
setopt ERR_EXIT

cd /jhkljhlk   # <-- file does not exit and ls gives an error
echo "this will not run"

相关内容