set -x
默认情况下,脚本执行后,屏幕只显示运行结果,没有其他内容。如果多个命令连续执行,它们的运行结果就会连续输出。有时会分不清,某一段内容是什么命令产生的。
set -x用来在运行结果之前,先输出执行的那一行命令。
1
2
3
4
!/usr/bin/env bash
set -x
echo bar
执行上面的脚本,结果如下。
1
2
3
$ bash script.sh
- echo bar
bar
可以看到,执行echo bar之前,该命令会先打印出来,行首以+表示。这对于调试复杂的脚本是很有用的。
-x还有另一种写法-o xtrace。
1
set -o xtrace
个人不建议用-e/-u这样的写法,不容易读,写成下面的样子会让人更容易理解。
1
2
3
set -o errexit
set -o nounset
set -o pipefail