让Bash shell的脚本的编写更严谨

因为shell不像其他语言那么严谨,所以经常会出现写完以后执行和预期不相符的情况,下面的几个方法可以让脚本在编写阶段更完善一些


#!/usr/bin/env bash
set -u

禁止使用不存在的变量


#!/usr/bin/env bash
set -x

脚本输出结果之前,把造成结果的命令也打印出来,类似于windows cmd下的echo on


#!/usr/bin/env bash
set -e

如果脚本里面有运行失败的命令(返回值非0),Bash脚本停止执行,防止错误累积。
但是,某些命令的非零返回值可能不表示失败,或者开发者希望在命令失败的情况下,脚本继续执行下去,可以暂时调整一下开关

set +e
command1
command2
set -e

set -o pipefail

用来处理管道命令,作用和set -e 一样,保证管道命令的每个部分都必须正确执行


set命令的上面这四个参数,一般都放在一起使用。


# 写法一
set -euxo pipefail

# 写法二
set -eux
set -o pipefail
这两种写法建议放在所有 Bash 脚本的头部。

另一种办法是在执行 Bash 脚本的时候,从命令行传入这些参数。


$ bash -euxo pipefail script.sh
posted @ 2022-07-11 10:45  鱼肉真好吃  阅读(41)  评论(0编辑  收藏  举报