0

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

乐趣1(){

回声“在 fun1 中”

乐趣2

变量=5

}

乐趣2(){

回声“在 fun2 中”

}

乐趣1 2>&1 | tee -a testlog.txt

echo $var # 打印空值

在 fun1 执行后有什么方法可以将 var 的值打印为 5?我需要控制台和日志文件中的输出。fun1 也应该只执行一次。

请帮忙。

4

1 回答 1

0

如果您将其编写为 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
于 2013-01-09T00:06:31.770 回答