linux - 如何轻松地将 shell 脚本中的所有 echo 语句放入日志文件中

标签 linux bash shell sh

我有一个 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/

相关文章:

c - 子 POSIX 线程如何被取消

shell - 使用 printf 指定宽度以生成干净的外观

c++ - 从 C++ 读取垃圾文件

Bash/Sed - 多行 sed 操作打印行乱序

macos - 将整数附加到字符串 Bash 脚本 OSX

android - 使用sed操作xml文件

linux - bash 脚本中出现 "Unexpected end of file"错误

linux - 如何在 Linux 中为电子邮件添加颜色编码?

regex - Awk,仅打印与正则表达式匹配的模式

python - 使用 subprocess 模块访问无密码 SSH 设备