首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Bash脚本exec文件描述符返回“未找到”

Bash脚本exec文件描述符返回“未找到”
EN

Unix & Linux用户
提问于 2018-01-29 15:35:19
回答 2查看 16.1K关注 0票数 2

我希望将所有调试输出设置为日志文件。因此,我检查了命令行- bash:将-x日志设置为文件\ Ask Ubuntu并遵循了说明。

测试脚本:

代码语言:javascript
复制
#!/bin/bash
exec 5 >/var/log/test.log
export BASH_XTRACEFD=5
main(){
set -x
echo hello
set +x
}
main

跑:

代码语言:javascript
复制
./test-script

返回:

代码语言:javascript
复制
exec: 5: not found

手册向您展示了您也可以这样做,那么为什么上面的操作不起作用呢?

EN

回答 2

Unix & Linux用户

回答已采纳

发布于 2018-01-29 15:38:29

这一错误使您半途而废:

主管: 5:未找到

exec试图执行一个名为5的命令,但没有找到它。

重定向文件描述符的语法在文件描述符号和重定向操作符之间不需要空格,如下所示:

代码语言:javascript
复制
exec 5> /var/log/test.log
票数 3
EN

Unix & Linux用户

发布于 2018-01-29 15:38:25

5>之间在exec行之间不应该有空格。

使用空格,脚本尝试执行一个名为5的命令,这就是为什么您得到“未找到”的原因。

如果没有空格,则将文件描述符5附加到给定的文件名中,以便输出。

此外,不需要导出变量BASH_XTRACEFD,只需设置它就够了:

代码语言:javascript
复制
#!/bin/bash 

exec 5>test.log   

BASH_XTRACEFD=5

main () {           
    set -x        
    echo hello    
    set +x        
}

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

https://unix.stackexchange.com/questions/420432

复制
相关文章

相似问题

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