Function 使用shell脚本中的tee进行stdoutt和stderr重定向

Function 使用shell脚本中的tee进行stdoutt和stderr重定向,function,unix,stdout,io-redirection,tee,Function,Unix,Stdout,Io Redirection,Tee,我正在尝试使用下面的代码将输出/错误打印到控制台和日志文件 fun1(){ 回声“内部fun1” fun2 var=5 } fun2(){ 回声“内部fun2” } fun1 2>&1|tee-a testlog.txt echo$var#打印空值 在fun1执行后,有没有办法将var值打印为5??我需要控制台和日志文件中的输出。而且fun1只能执行一次 请提供帮助。如果您将其作为bash脚本编写,则可能: #!/bin/bash exec 3>&1 1> >(tee

我正在尝试使用下面的代码将输出/错误打印到控制台和日志文件

fun1(){

回声“内部fun1”

fun2

var=5

}

fun2(){

回声“内部fun2”

}

fun1 2>&1|tee-a testlog.txt

echo$var#打印空值

在fun1执行后,有没有办法将var值打印为5??我需要控制台和日志文件中的输出。而且fun1只能执行一次


请提供帮助。

如果您将其作为bash脚本编写,则可能:

#!/bin/bash

exec 3>&1 1> >(tee testlog.txt) 2>&1

fun1(){
    echo 'inside fun1'
    fun2
    var=5
}

fun2(){
    echo 'inside fun2'
}

fun1
echo "$var"
如果您希望将其作为普通bourn shell来执行,可以将其分为两个脚本:

脚本2.sh:

#!/bin/sh

fun1(){
    echo 'inside fun1'
    fun2
    var=5
}

fun2(){
    echo 'inside fun2'
}

fun1
echo $var
和script1.sh:

#!/bin/sh

script2.sh 2>&1 | tee testlog.txt

你一次问几个(独立的)问题。考虑发布一些单独的问题。我唯一关心的是显示$var的值。