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 @   bigcat47  阅读(11)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示