2012-10-17 31 views
0

我試圖用下面的代碼打印輸出/錯誤到控制檯和日誌文件。stdoutt和stderr在shell腳本中使用tee的重定向

FUN1(){

回聲 「內部FUN1」

FUN2

VAR = 5

}

FUN2(){

回聲「內部FUN2 「

}

fun1 2> & 1 |三通-a testlog.txt

回聲是$ var#打印空值

FUN1執行後打印VAR爲5的值的任何方式?我需要在控制檯和日誌文件中輸出。 fun1也應該只執行一次。

請大家幫忙。

+0

你可以在一個問中提出幾個(獨立的)問題。考慮發佈一些單獨的問題。 –

+0

我唯一擔心的是顯示$ var的值 –

回答

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" 

如果你更想這樣做,作爲一個正常的境界外殼,你可以把它分成兩個腳本:

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