我想将所有调试输出设置到日志文件中。所以我检查了命令行 - bash: set -x messages to file | 询问 Ubuntu并按照说明进行操作。
测试脚本:
#!/bin/bash
exec 5 >/var/log/test.log
export BASH_XTRACEFD=5
main(){
set -x
echo hello
set +x
}
main
Run Code Online (Sandbox Code Playgroud)
跑步:
./test-script
Run Code Online (Sandbox Code Playgroud)
返回:
exec: 5: not found
Run Code Online (Sandbox Code Playgroud)
手册显示你也可以做到这一点,那么为什么上面的方法不起作用呢?
5
行之间和>
行上不应有空格exec
。
使用空格,脚本会尝试执行名为 的命令5
,这就是为什么您会收到“未找到”的消息。
如果没有空格,则将文件描述符 5 附加到给定文件名以进行输出。
此外,不需要导出变量BASH_XTRACEFD
,只需设置它就足够了:
#!/bin/bash
exec 5>test.log
BASH_XTRACEFD=5
main () {
set -x
echo hello
set +x
}
main
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
17521 次 |
最近记录: |