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
我想实现一个 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