gpt4 book ai didi

Bash - 将所有输出发送到日志文件,但显示错误

转载 作者:行者123 更新时间:2023-12-01 22:19:52 26 4
gpt4 key购买 nike

是否可以在 bash 脚本中生成所有输出,除了我用 echo 专门输出的输出,转到日志文件,但是如果输出中有错误,它应该显示在终端中(日志文件也当然)?

最佳答案

这是您可以使用附加文件描述符执行的操作:

#!/bin/bash

# open fd=3 redirecting to 1 (stdout)
exec 3>&1

# redirect stdout/stderr to a file but show stderr on terminal
exec >file.log 2> >(tee >(cat >&3))

# function echo to show echo output on terminal
echo() {
# call actual echo command and redirect output to fd=3
command echo "$@" >&3
}

# script starts here
echo "show me"
printf "=====================\n"
printf "%s\n" "hide me"
ls foo-foo
date
tty
echo "end of run"

# close fd=3
exec 3>&-

运行脚本后,它将在终端上显示以下内容:

show me
ls: cannot access 'foo-foo': No such file or directory
end of run

如果你执行 cat file.log 那么它会显示:

=====================
hide me
ls: cannot access 'foo-foo': No such file or directory
Fri Dec 2 14:20:47 EST 2016
/dev/ttys002
  • 在终端上,我们只得到 echo 命令的输出和所有错误。
  • 在日志文件中,我们收到错误和脚本的剩余输出。

关于Bash - 将所有输出发送到日志文件,但显示错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40936817/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com