\`set -x\` 有什么作用?

新手上路,请多包涵

我有一个 shell 脚本,其中包含以下行:

 [ "$DEBUG" == 'true' ] && set -x

原文由 Ole 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.9k
2 个回答

set -x 启用 shell 模式,所有执行的命令都打印到终端。在您的情况下,它显然用于调试,这是 set -x 的典型用例:在执行时打印每个命令可以帮助您可视化脚本的控制流,如果它没有按预期运行。

set +x 禁用它。

原文由 John Zwinck 发布,翻译遵循 CC BY-SA 4.0 许可协议

set -x

打印简单命令的跟踪,对于命令、case 命令、选择命令,以及命令及其参数或相关单词列表的算术运算在它们展开之后和执行之前。 PS4 变量的值被扩展,结果值在命令及其扩展参数之前打印。

[ 来源]

例子

set -x
echo `expr 10 + 20 `
+ expr 10 + 20
+ echo 30
30


 set +x
echo `expr 10 + 20 `
30

上面的例子说明了 set -x 的用法。使用时,上述算术表达式已被扩展。我们可以看到如何逐步评估单行。

  • 第一步 expr 已经评估。
  • 第二步 echo 已经评估。

要了解有关设置的更多信息 → 访问 此链接

当涉及到你的 shell 脚本时,

 [ "$DEBUG" == 'true' ] && set -x

当执行模式选择为 DEBUG 时,您的脚本可能已经打印了一些额外的信息行。传统上,人们习惯于在使用可选参数调用脚本时启用调试模式,例如 -d

原文由 Raju 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题