我有一个 shell 脚本,它会回显逻辑中的一些重要位置。每次我执行回显时,我都会通过执行 >>/some/location/my_logtxt
将日志添加到日志文件中。
逻辑如下所示
ret=123
echo Something happened $ret >> /some/location/my_logtxt
// some logic
echo Something else happened $ret >> /some/location/my_logtxt
// some more logic
echo Something else happened again $ret >> /some/location/my_logtxt
问题:
是否有一个语句可以声明所有 echo 语句日志进入以下文件,而不是为每个 echo
执行 >>/some/location/my_logtxt
?
最佳答案
如果你想所有输出到日志文件,你可以使用exec
重定向:
exec >> "$logfile"
您可能也希望重定向 stderr:2>&1
。
如果您只想重定向您的 echo
命令,您可以为此连接一个未使用的流(大于 2 个):
exec 3>> "$logfile"
ret=123
echo "Something happened $ret" >&3
# some logic
echo "Something else happened $ret" >&3
请注意,这些方法不再为每次写入重新打开日志 - 如果您重命名日志文件,输出将继续转到它,而在原来的情况下,后续输出将以旧文件结束姓名。
关于linux - 如何轻松地将 shell 脚本中的所有 echo 语句放入日志文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52737331/