“set -x”在 bash 脚本中起什么作用?

“set -x”在 bash 脚本中起什么作用?

我正在阅读一个 bash 脚本,它以 开头set -x。我在 google 上搜索了一下,没有找到任何一本手册详细描述了所有标志-x

如果我听起来像是一个在问问题之前没有做过调查的人,我深表歉意,但我确实没有找到任何相关信息set -x。有什么想法吗?

答案1

正如help set所说:

      -x  Print commands and their arguments as they are executed.

它可以在交互式和非交互式 shell 中运行,因此您可以尝试set -x在交互式 shell 中运行以查看效果。运行的每个命令都会首先回显给您(+前面带有符号,以帮助您将其与大多数常规输出区分开来)。

ek@Cord:~$ echo hello world
+ echo hello world
hello world

(如果您看到的输出比您在交互式 shell 中预期的多得多,那么您的 shell 可能正在运行命令来构建您的提示符。例如,如果您的提示符设置为显示有关您导航到的 git 存储库的信息,您将看到大约 20 行额外的内容,即使您现在实际上不在存储库中。)

要关闭它,请运行set +x。有点令人困惑的是,使用set可以-启用 shell 选项,也+可以禁用它。

有关详细信息,请参阅For more information, see4.3.1 内置 Set在里面Bash 参考手册

相关内容