linux - Bash 将所有标准输出都输出到控制台和文件

标签 linux bash shell scripting

我正在尝试将所有 stdoutstderr 输出到控制台和文件。我知道 ./script | tee somefile ,但这对我不起作用。我希望它自动执行,而无需我从控制台通过管道传输它。我试过了

#!/bin/sh
exec 2>&1 | tee somefile
echo "..."

但这没有用。什么是正确的解决方案?

最佳答案

经典的解决方案是在脚本的顶部添加类似这样的内容:

test -z "$REXECED" && { REXECED=1 exec $0 "$@" 2>&1 |  tee -a somefile; exit; }

您可能还喜欢:

test -t 1 && {  exec $0 "$@" 2>&1 |  tee -a somefile; exit; }

关于linux - Bash 将所有标准输出都输出到控制台和文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46498540/

相关文章:

shell 脚本 header (#!/bin/sh 与 #!/bin/csh)

linux - 如何在变量中传递值

linux - 从 Groovy 将 telnet 作为 shell 命令调用

linux - 如何将环境变量传递给 Ubuntu 上的 Netbeans Makefile?

linux - 按字段排序 UNIX

linux - 如何找到只对所有者具有特定权限的文件?

linux命令获取指定格式的行

bash - SFTP:返回远程目录中的文件数?

linux - 在被定界符分割的文件的每一行上将 Bash 脚本添加到 mkdir?

shell - 在 Expect 脚本中比较字符串的 If 条件