Alan Storm Asked: 2017-12-07 19:29:50 +0800 CST2017-12-07 19:29:50 +0800 CST 2017-12-07 19:29:50 +0800 CST 什么是`bash -x` 772 一位同事最近向我介绍了如何bash -x在不采取echo $foo路线的情况下调试我的 bash 脚本。 $ bash -x hello-world.sh + echo 'Hello World' Hello World 在内部——bash 如何做到这一点?我检查了一下man bash,它(似乎没有?)-x在调用解释器时提到了这个标志。我主要是在寻找关于在环境中调试和不调试的内容-x或任何其他问题的概述。 bash debugging 1 个回答 Voted Best Answer Ben Stern 2017-12-07T19:34:56+08:002017-12-07T19:34:56+08:00 -xxtrace与使用-obash 选项设置相同。从我的 bash 手册页副本中: 展开每个简单命令后,for command、case命令、select命令或算法for command,显示PS4的展开值,后跟命令及其展开参数或相关单词列表。 我不认为有很多“陷阱”:它会打印它执行的每个命令。我想如果您正在解析stderrshell 脚本的输出,这可能会搞砸,因为命令被打印到stderr(又名文件描述符 2),但这似乎是一个极端情况。 (您也可以有条件地在脚本中或在交互式 shell 会话中启用set -x它以将其打开并set +x再次将其关闭。)
-x
xtrace
与使用-o
bash 选项设置相同。从我的 bash 手册页副本中:我不认为有很多“陷阱”:它会打印它执行的每个命令。我想如果您正在解析
stderr
shell 脚本的输出,这可能会搞砸,因为命令被打印到stderr
(又名文件描述符 2),但这似乎是一个极端情况。(您也可以有条件地在脚本中或在交互式 shell 会话中启用
set -x
它以将其打开并set +x
再次将其关闭。)