#!/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
或者
在脚本中。
您可以使用 再次取消设置该选项
set +x
。如果您只想为几个命令执行此操作,您可以使用子shell:`(set -x; command1; command; ...;)这些也有效:
或者
但是 -v 不会在每个脚本行之前打印 PS4 字符串,也不会单独跟踪“for”语句(例如)的步骤。它会回显评论,而 -x 不会。
下面是使用 -v 的输出示例:
这是使用 -x 的相同脚本的结果:
请注意,我包含了“echo -n”以强调 -v 和 -x 之间的差异。此外,-v 与“-o verbose”相同,但后者似乎不能作为 shebang 的一部分。
这也应该有效:
这应该有效:
set -o xtrace
并且set +o xtrace
是你的朋友(它比 更详细,-o verbose
并且输出到 STDERR,而不是冗长,它似乎记录到 STDOUT)。在此处查看更多提示
有几种方法。
作为shebang线。
包含
set -x
在脚本本身将启用该功能,同时set +x
将禁用它。这两种方法也适用于更便携的 sh shell。如果我没记错的话 perl 也有 -x 选项。
就像
语言 = python、perl、bash -x = 操作符脚本 = 文件名
希望能帮助到你。
#! /bin/bash -x
做你想做的事。