“set -x”是做什么的?
我有一个shell脚本,其中包含以下行:
[ "$DEBUG" == 'true' ] && set -x
set -x
启用所有执行的命令被打印到terminal的shell模式。 在你的情况下,它明确地用于debugging,这是一个典型的使用情况set -x
:打印每个命令,因为它执行可能会帮助你可视化脚本的控制stream程,如果它没有按预期的function。
set -x
在展开和执行之前,打印一些简单的命令,用于命令,大小写命令,select命令,以及命令及其参数或相关单词列表的算术。 PS4variables的值被扩展,结果值被打印在命令及其扩展参数之前。
例
set -x echo `expr 10 + 20 ` + expr 10 + 20 + echo 30 30
set +x echo `expr 10 + 20 ` 30
上面的例子说明了set -x
的用法。 使用时,上面的算术expression式已被扩展。 我们可以看到一条单线如何被逐步评估。
- 第一步
expr
已经被评估过了。 - 第二步
echo
已被评估。
要了解更多关于设置→访问此链接
当涉及到你的shell脚本,
[ "$DEBUG" == 'true' ] && set -x
当select执行模式为DEBUG
时,您的脚本可能已经打印了一些额外的信息。 传统上,当使用诸如-d
可选参数调用脚本时,人们曾经启用debugging模式