0

以下のコードを使用して、出力/エラーをコンソールとログファイルに出力しようとしています。

fun1(){

echo "fun1 の内部"

楽しい2

変数=5

}

fun2(){

echo "fun2 内"

}

楽しい1 2>&1 | ティー - a testlog.txt

echo $var # null 値の出力

fun1 の実行後に var の値を 5 として出力する方法はありますか?? コンソールとログ ファイルの両方に出力が必要です。また、fun1 は 1 回だけ実行する必要があります。

助けてください。

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 シェルとして実行したい場合は、2 つのスクリプトに分けることができます。

script2.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 に答える