Answers:
bash -x script
要么
set -x
在脚本中。
您可以使用再次取消设置该选项set +x
。如果只想对几个命令执行此操作,则可以使用子shell:`(set -x; command1; command; ...;)
PS4
您可以调整的提示-x
。例如:PS4='Line $LINENO @ $(date +%s.%N): ' bash -x script
(date
会慢下来,虽然)
这些也可以:
set -v
要么
#!/bin/bash -v
但是-v不会在每个脚本行之前打印PS4字符串,并且不会单独跟踪“ for”语句的步骤(例如)。它会回显注释,而-x不会。
这是使用-v的输出示例:
#!/bin/bash -v
# this is a comment
for i in {1..4}
do
echo -n $i
done
1234echo
echo hello
hello
这是与-x相同的脚本的结果:
+ for i in '{1..4}'
+ echo -n 1
1+ for i in '{1..4}'
+ echo -n 2
2+ for i in '{1..4}'
+ echo -n 3
3+ for i in '{1..4}'
+ echo -n 4
4+ echo
+ echo hello
hello
请注意,我添加了“ echo -n”来强调-v和-x之间的差异。此外,-v与“ -o verbose”相同,但后者似乎不适合作为shebang的一部分。
set
选项的人,您可以在此手册页上找到它们。