gpt4 book ai didi

linux - bash: BASH_XTRACEFD: 5: 跟踪文件描述符的值无效

转载 作者:太空宇宙 更新时间:2023-11-04 11:48:25 25 4
gpt4 key购买 nike

我想做和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 的解决方案。

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

$ export BASH_XTRACEFD="5"
bash: BASH_XTRACEFD: 5: invalid value for trace file descriptor

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

最佳答案

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

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

执行 5>
导出 BASH_XTRACEFD=5
这应该可以解决您所展示的问题,但是我觉得您只是想重定向 stderr,所以改为执行

--> 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。

关于linux - bash: BASH_XTRACEFD: 5: 跟踪文件描述符的值无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56872211/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com