set lines使用

使用这些设置,某些常见错误将导致脚本立即失败。 否则,您可能会忽略那些隐藏的错误,这些错误只有在生产中才被发现。

set -euxo pipefail 是下面4个命令的简称:

set -e
如果任何命令具有非零的退出状态,该选项指示 bash 立即退出。在所有广泛使用的通用编程语言中,未处理的运行时错误(无论是 Java 中抛出的异常、C 中的分段错误,还是 Python 中的语法错误)都会立即停止程序的执行;不执行后续行。
默认情况下,bash 不这样做。如果您在命令行上使用 bash,则此默认行为正是您想要的
如果脚本中的一行失败,但最后一行成功,则整个脚本都有一个成功的退出代码。这很容易忽略错误。

set -x
启用 shell 模式,将所有执行的命令都打印到终端。
这是 set -x 的典型用例:在执行每个命令时打印它可以帮助您可视化脚本的控制流。

set -u
影响变量。
除了 $* 和 $@,对您之前未定义的任何变量的引用都是一个错误,并导致程序立即退出。
出于各种充分的理由,Python、C、Java 等语言的行为方式都相同。一个是错别字不会在您没有意识到的情况下创建新变量。

!/bin/bash

firstName="Aaron"
fullName="$firstname Maxwell"
echo "$fullName"

第三行的右边是“firstname”,全小写,而不是驼峰式的“firstName”。如果没有 -u 选项,这将是一个静默错误。但是使用 -u 选项,脚本在该行以退出代码 1 退出,将消息“firstname: unbound variable”打印到 stderr。
这就是您想要的:让它立即显式失败,而不是创建可能为时已晚发现的细微错误。
set -o pipefail

posted @ 2024-12-21 13:36  bigcat47  阅读(25)  评论(0)    收藏  举报