2012-01-04 38 views
2

在外殼腳本我有如何輸出重定向返回到顯示單個命令

LOG=/my.log 
exec 1>>$LOG 
exec 2>&1 

被重定向在外殼腳本的輸出。現在問題是在下面

LOG=/etc/security/aixpert/log/aixpert.log 
exec 1>>$LOG 
exec 2>&1 

#some codes 

print "I want this on cmd output not in log" 

#I want rest of the output redirected to log as usual 

我該怎麼做?

回答

4

關鍵是要克隆stdout在將控制檯重定向到日誌之前將控制檯複製到任意fd(我選擇了3)。每當你想輸出發送到你剛纔重定向FD 1控制檯回的fd 3 >&3對於一個命令

LOG=/etc/security/aixpert/log/aixpert.log 

exec 3>&1 >>"$LOG" 2>&1 

#some codes 

echo "I want this on cmd output not in log" >&3 

#I want rest of the output redirected to log as usual 
+0

它是精細挑選任何FD?是否有可能將3分配給由正在操作的另一個應用程序打開的文件? – 2012-01-04 11:32:46

2
# save stdout as fd 3 
exec 3>&1 
exec 1>>$LOG 
exec 2>&1 

echo foo >&3 # output to old stdout 
echo bar  # output to logfile 
+0

爲什麼downvote? – 2012-01-04 11:07:58

+0

對不起,我的意思是upvote。 – SiegeX 2012-01-04 11:08:29

+0

@SiegeX:謝謝:) +1你的回答也是,我想你其實早幾秒鐘。 – 2012-01-04 11:10:40

相關問題