Bash set -x echo重定向以及命令

前端之家收集整理的这篇文章主要介绍了Bash set -x echo重定向以及命令前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在编写一个 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

如何使命令完全按照它们的编写方式进行回显,而不是让脚本重新排序管道?

使用set -x是不可能的.您唯一的选择是通过DEBUG陷阱查看当前命令.
trap 'printf %s\\n "$BASH_COMMAND" >&2' DEBUG

这不会显示-x将设置的精确参数.将它们组合起来可以为您提供全面的图片,尽管它有很多调试输出.

猜你在找的Bash相关文章