gpt4 book ai didi

bash - 如何将 shell 脚本 stdout/stderr 打印到文件/s 和控制台

转载 作者:行者123 更新时间:2023-12-04 13:55:26 33 4
gpt4 key购买 nike

在 bash 脚本中,我使用以下语法命令打印从脚本到文件的所有内容 - $file$sec_file我们在 Linux rhel 服务器上运行脚本 - 版本 7.8

exec > >(tee -a "$file" >>"$sec_file") 2>&1
所以在 bash 脚本完成后,我们在两个文件中都得到了 stdout/stderr 的内容bash 脚本中的每一行
现在我们要另外打印到控制台 stdout/stderr不仅是文件
我将不胜感激任何建议
脚本示例:
# more  /tmp/script.bash

#!/bin/bash

file=/tmp/file.txt
sec_file=/tmp/sec_file.txt

exec > >(tee -a "$file" >>"$sec_file") 2>&1

echo "hello world , we are very happy to stay here "
示例如何运行脚本:
/tmp/script.bash

<-- no output from the script -->

# more /tmp/file.txt
hello world , we are very happy to stay here
# more /tmp/sec_file.txt
hello world , we are very happy to stay here
应如下所示的预期输出示例
/tmp/script.bash
hello world , we are very happy to stay here
# more /tmp/file.txt
hello world , we are very happy to stay here
# more /tmp/sec_file.txt
hello world , we are very happy to stay here

最佳答案

我认为,最简单的方法是将多个文件作为参数添加到 tee像这样:

% python3 -c 'import sys; print("to stdout"); print("to stderr", file=sys.stderr)' 2>&1 | tee -a /tmp/file.txt /tmp/file_sec.txt
to stdout
to stderr
% cat /tmp/file.txt
to stdout
to stderr
% cat /tmp/file_sec.txt
to stdout
to stderr
您的脚本将如下所示:
#!/bin/bash

file=/tmp/file.txt
sec_file=/tmp/sec_file.txt

exec > >(tee -a "$file" "$sec_file") 2>&1

echo "hello world , we are very happy to stay here "

关于bash - 如何将 shell 脚本 stdout/stderr 打印到文件/s 和控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63297676/

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