shell 脚本 set

update-codegen.sh 几个set 命令

set -o errexit
set -o nounset
set -o pipefail

Bash 执行脚本的时候,会创建一个新的 Shell(执行环境),set命令用来修改 Shell 环境的运行参数。(参数清单

命令行下不带任何参数,直接运行set,会显示所有的环境变量和 Shell 函数。

set -o nounset (set -u)遇到变量不存在,脚本应该报错,而不是默默地往下执行。

set -o xtrace (set -x)会打印脚本正在执行的命令,行首以+表示。这对于调试复杂的脚本是很有用的。

set -o errexit (set -e) (set +e) 脚本只要发生错误,就终止执行。(+e表示关闭 -e表示重新打开)

set -e有一个例外情况,就是不适用于管道命令。

管道命令,就是多个子命令通过管道运算符(|)组合成为一个大的命令。Bash 会把最后一个子命令的返回值,作为整个命令的返回值。只要最后一个子命令不失败,管道命令总是会执行成功,因此它后面命令依然会执行,set -e就失效了。

set -o pipefail 只要一个子命令失败,整个管道命令就失败,脚本就会终止执行。

set -e 其他的命令行写法

#只要command有非零返回值,脚本就会停止执行
$command || exit 1


#如果停止执行之前需要完成多个操作,就要采用下面三种写法。

# 写法一
command || { echo "command failed"; exit 1; }

# 写法二
if ! command; then echo "command failed"; exit 1; fi

# 写法三
command
if [ "$?" -ne 0 ]; then echo "command failed"; exit 1; fi


 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值