我正在编写一个
Bash脚本,我希望所有命令在发生时都能被回显.我知道我需要使用set -x和set x分别关闭和打开此行为(
SOF post here).但是,它不会回显所有内容,即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
如何使命令完全按照它们的编写方式进行回显,而不是让脚本重新排序管道?