我希望将所有调试输出设置为日志文件。因此,我检查了命令行- bash:将-x日志设置为文件\ Ask Ubuntu并遵循了说明。
测试脚本:
#!/bin/bash
exec 5 >/var/log/test.log
export BASH_XTRACEFD=5
main(){
set -x
echo hello
set +x
}
main跑:
./test-script返回:
exec: 5: not found手册向您展示了您也可以这样做,那么为什么上面的操作不起作用呢?
发布于 2018-01-29 15:38:29
这一错误使您半途而废:
主管: 5:未找到
exec试图执行一个名为5的命令,但没有找到它。
重定向文件描述符的语法在文件描述符号和重定向操作符之间不需要空格,如下所示:
exec 5> /var/log/test.log发布于 2018-01-29 15:38:25
5和>之间在exec行之间不应该有空格。
使用空格,脚本尝试执行一个名为5的命令,这就是为什么您得到“未找到”的原因。
如果没有空格,则将文件描述符5附加到给定的文件名中,以便输出。
此外,不需要导出变量BASH_XTRACEFD,只需设置它就够了:
#!/bin/bash
exec 5>test.log
BASH_XTRACEFD=5
main () {
set -x
echo hello
set +x
}
main https://unix.stackexchange.com/questions/420432
复制相似问题