gpt4 book ai didi

bash - 将输出重定向到终端

转载 作者:行者123 更新时间:2023-12-02 08:26:48 31 4
gpt4 key购买 nike

我正在尝试了解重定向输出。

我有代码:

#!/bin/bash
function function1 () {
log=${1}.log

exec 3>&1
exec 1>>$log
exec 2>&1

echo checking $log >&3
echo txt to $log
}

function1 log1
function1 log2

exit 0

我得到的输出是:

checking log1.log

和文件 log1.log 内容

txt to log1.log
checking log2.log

和文件 log2.log 内容

txt to log2.log

我真正想要的是包含内容的log1.log文件

txt to log1.log

和文件 log2.log 内容

txt to log2.log

并输出到终端。

checking log1.log
checking log2.log

请问我该怎么做?我知道我可以使用 function1 log1 > log1.log 2>&1,但是我不能在 function1 中将 echo 重定向回终端,我可以,但结果相似。

最佳答案

如果要设置 stdout 和 stderr,然后在函数中恢复它们,请执行以下操作:

function function1 () {
log=${1}.log
exec 4>&2 3>&1 1>>$log 2>&1 # save 1 and 2 to 3 and 4
echo checking $log >&3
echo txt to $log
exec 1>&3 2>&4 3>&- 4>&- # restore 1 and 2
}

3>&- 关闭 3,只是为了完整性。

关于bash - 将输出重定向到终端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31454414/

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