我正在编写一个 Bash 脚本,我希望所有命令在它们发生时都被回显。我知道我需要分别使用set -x
和set +x
切换此行为(此处为 SOF 帖子)。但是,它并没有回显所有内容,即 I/O 重定向。
例如,假设我有这个非常简单的 Bash 脚本:
set -x
./command1 > output1
./command2 arg1 arg2 > output2
这将是输出
+ ./command1
+ ./command2 arg1 arg2
Bash 没有将我的 stdout 重定向回显到output1和output2。为什么是这样?我怎样才能实现这种行为?也许shopt
我必须在脚本中设置一个选项?
注意:我还注意到管道不会按预期打印。例如,如果我要使用这个命令:
set -x
./command3 | tee output3
我会得到这个输出:
+ tee output3
+ ./command3
如何使命令完全按照它们的编写方式回显,而不是让脚本重新排序管道?