加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 18:25:11 所属栏目:安全 来源:网络整理
导读:我正在编写一个 Bash脚本,我希望所有命令在发生时都能被回显.我知道我需要使用set -x和set x分别关闭和打开此行为( SOF post here).但是,它不会回显所有内容,即I / O重定向. 例如,假设我有这个非常简单的Bash脚本: set -x./command1 output1./command2 arg1
我正在编写一个 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 %sn "$BASH_COMMAND" >&2' DEBUG

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读