我在用
trap 'echo -e "\e[92m$$BASH_COMMAND\e[0m"' DEBUG
在Bash脚本中打印每个执行的命令.
这工作正常,只是当我将它们一起管道时它会打印两个命令:
bzip2 -dc < dump.sql.bz2 | mysql test
打印:
06002
我可以对疏水阀或管道线进行任何更改,以便将线条打印为一条线路吗?
将您的命令更改为:
mysql test < <(bzip2 -dc < dump.sql.bz2)
使用process substitution而不是管道使命令从Bash的角度来看是一个简单的命令,这是DEBUG陷阱和内置$BASH_COMMAND变量运行的粒度级别.
背景:
设计的DEBUG(伪)信号在简单命令的级别上运行,$BASH_COMMAND也是如此.
bzip2 -dc< dump.sql.bz2 | mysql test是由多个简单命令组成的管道. 因此,您的陷阱语句无法通过管道执行您想要的操作. 使用复合命令(例如,while循环或命令组({…; …;})或命令列表(与操作符连接的简单命令或管道;&&)最接近您想要的内容; ||&)是使用set -v,它在执行之前将整个命令回显到stderr,但我不知道如何控制此输出的格式.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。