在 Bash 中使用 set -x 进行命令跟踪

5 min read

默认情况下,单独运行 set 命令将返回当前设置的变量及其值的列表,包括 Bash 可执行文件位置、版本信息和 PATH 等环境变量。

该命令的使用是当你查看执行的命令时。如果你是程序员,这可以帮助你调试 Bash 脚本以查看它们是否在特定命令上失败。

为此,请执行 set -xset -o xtrace,这将打开命令跟踪。虽然命令本身不输出任何内容,但后续命令将在执行前打印出来。在命令中使用大括号扩展(最近的 Bash 功能)很有帮助。

如果你有删除编号 TXT 文件的命令,启用 set 命令跟踪将显示大括号的扩展形式以及该目录中的所有 TXT 文件。

user@linux:~$ set -x
user@linux:~$ cd /tmp
+ cd /tmp
user@linux:~$ # example of expansion (and comments do not print out in traces)
user@linux:~$ touch {1..5}.txt
+ touch 1.txt 2.txt 3.txt 4.txt 5.txt
user@linux:~$ rm -f *.txt
+ rm -f *.txt
user@linux:~$ # however, asterisk globs do not expand.

set -e

set -e它使得脚本只要发生错误,就终止执行