“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模式