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
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构