2012-01-04 8 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つを選んだ)にコンソールに送り、ログにリダイレクトすることです。あなたがコンソールに出力を送信したい時はいつでもあなただけの1つのコマンドのために>&3バックFD 3にFD 1をリダイレクト

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が動作中の別のアプリケーションによって開かれたファイルに割り当てられている可能性はありますか? –

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? –

+0

申し訳ありませんが、私はupvoteするつもりだった。 – SiegeX

+0

@SiegeX:ありがとう:)あなたの答えに+1しても、私はあなたが実際に数秒前だったと思います。 –

関連する問題