【问题标题】:Capture -x debug commands into a file in Bash将 -x 调试命令捕获到 Bash 中的文件中
【发布时间】:2014-10-24 22:14:41
【问题描述】:

在 bash 中使用 set -x 将 shell 扩展命令打印到 stderr。 我想将这些重定向到文件或管道。 但不是整个输出 - 只有一些命令。 比如:

set -x command.txt  ### <-- command.txt param is made up
echo $A $B
set +x

这会将调试输出放到命令中。 txt.

这个可以吗?

【问题讨论】:

标签: bash debugging


【解决方案1】:

bash 4.1 或更高版本:

#!/bin/bash

exec 5> command.txt
BASH_XTRACEFD="5"

echo -n "hello "

set -x
echo -n world
set +x

echo "!"

输出到标准输出(FD 1):

hello world!

输出到 command.txt (FD 5):

+ echo -n world
+ set +x

【讨论】:

  • 像任何好的记录器一样,每一行都应该有一个时间戳。有没有办法使用这种创建文件描述符5的方法来获取时间戳,并记录正在执行的行的当前时间?
  • @activedecay:如果您有权访问 logger 命令,那么您可以使用this 通过您的系统日志写入带有时间戳、脚本名称和行号的调试输出。跨度>
猜你喜欢
  • 2019-11-01
  • 2022-10-24
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 2020-05-07
  • 1970-01-01
  • 1970-01-01
  • 2013-07-22
相关资源
最近更新 更多