首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bash: BASH_XTRACEFD: 5:跟踪文件描述符值无效

bash: BASH_XTRACEFD: 5:跟踪文件描述符值无效
EN

Stack Overflow用户
提问于 2019-07-03 22:20:51
回答 1查看 1.3K关注 0票数 0

我想做和shell - Suppress the bash execution trace (set -x) from the outside of the script - Unix & Linux Stack Exchange一样的事情。

在进行Bash调试时,有时会出现一个命令(spinner 'Now loading... ' &),该命令会使调试输出变脏,因为该命令使用的是while循环,因此有大量的输出。

在本例中,我希望通过类似于spinner 'Now loading... ' 5>/dev/null &的命令来抑制命令的输出。

我搜索了如何做到这一点,我找到了解决方案,那就是BASH_XTRACEFD

但是我尝试在命令行中定义变量时,出现了如下错误。

代码语言:javascript
复制
$ export BASH_XTRACEFD="5"
bash: BASH_XTRACEFD: 5: invalid value for trace file descriptor

我猜发生错误的原因是文件描述符关闭或有什么错误。但我不知道该怎么解决这个问题。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-07-04 00:19:22

您链接到的示例显示了正确的方法,即在通过运行脚本创建新shell之前,在一行中执行此操作。

您的问题是您当前在没有文件描述符5的交互式shell中执行此操作。您可以通过替换shell并预先创建该文件描述符来修复此问题,如果您只想丢弃所有设置的-x,则可以使用

应该可以解决您演示的问题的exec 5> export BASH_XTRACEFD=5,但是我觉得您只是在尝试重定向stderr,所以应该这样做。

代码语言:javascript
复制
--> ls -l foo
ls: cannot access foo: No such file or directory
root@mybox[/tmp] Wed Jul 03 <11:17:46>
--> ls -l foo 2>/dev/null # Notice the 2>/dev/null after the command
root@mybox [/tmp] Wed Jul 03 <11:17:50>

这将抑制旋转器,以防它正在写入stderr。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56872211

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档