Shell-脚本记录

Shell-Script Logging

我想实现一个 shell-脚本,它运行命令 xyz 并将其输出存储在一个变量中,但是在 相同 时间转发命令输出到 shell-scripts 标准输出。

这是因为我想通过 launchd 启动这个脚本,让它自动记录脚本的输出,然后让脚本将各个命令的输出推送到网络。脚本不应该简单地缓冲命令输出并在它之后打印它运行,而是实时的。

这样的事情是否可行,如果可行,您将如何实现?

谢谢

thel30n

我认为没有办法将日志保存到 shell 变量中,同时避免缓冲命令的输出。但另一种方法是使用 tee(1) 将日志消息保存到文件中。例如:

LOGFILE=/path/to/logfile
run_and_log() {
    $@ | tee -a "$LOGFILE"
}

run_and_log xyz

您正在寻找命令:

$VAR=$(echo 'test' | tee /dev/tty)
test

echo $VAR
test