什么是“bash -x”

什么是“bash -x”

一位同事最近向我介绍了如何bash -x在不走路线的情况下调试我的 bash 脚本echo $foo

$ bash -x hello-world.sh 
+ echo 'Hello World'
Hello World

在内部——bash 是如何实现这一点的?我检查了一下man bash,它(似乎没有?)-x在调用解释器时提到了该标志。我主要是寻找有关在环境中将调试和不会调试的内容-x或任何其他问题的概述。

答案1

-xxtrace-obash 选项的设置相同。从我的 bash 联机帮助页副本中:

分别展开后简单的命令,为了命令,案件命令,选择命令或算术为了命令,显示扩展值PS4,后跟命令及其扩展参数或关联的单词列表。

我不认为这有很多“陷阱”:它打印它执行的每个命令。我想如果您正在解析stderrshell 脚本的输出,这可能会搞砸,因为命令被打印到stderr(也称为文件描述符 2),但这似乎是一种极端情况。

(您还可以有条件地在内部脚本或交互式 shell 会话中启用此功能,以set -x将其打开并set +x再次关闭。)

相关内容