2010-12-06 9 views
2

ログに出力するechosとerr_fileへのエラーを持つシェルスクリプトがあります。しかし、私は特にstderrにいくつかのステートメントをエコーし​​たい。 Plsは私は条件がしかし誤るはstdする場合の対処方法を見つけ出すことができませんでした、最後の出力を送信したいksh特定のステートメントに対するstderr

#!/bin/ksh 
echo "paramPassed: $0 $#" 

err_file="error_file.txt" 
new_file="new_file.txt" 

exec >> ${new_file} 
#exec >> ${new_file} 2>${err_file} 
#exec >> ${new_file} 2>&1 

if [ $# -eq 1 ]; then 
    username=$1 
fi 

userInfo=$(paramInfo ${username} | awk -F: '{print $2}') 
echo ${userInfo} 

rcp ${err_file} mtvst32:/rcs/ver34/${err_file} 

if [ $? -ne 0 ]; then 
     #This doesn't work. Need the following to go to console 
     echo "UserInfo.SH FAILED copy to mtvst32" >> &2; 
fi 

助けます。

答えて

8

エラーメッセージが表示されると思われます。あなたがそれを投稿したなら、それは役に立ちましたでしょう。

echo "UserInfo.SH FAILED copy to mtvst32" >&2 

はスペースと>のいずれかを削除します。しかし、これはあなたの問題を解決する可能性があります。

+0

ありがとうございました。それはうまくいった。 同じコードから exec >> $ {new_file} 2>&1 最後のecho文だけをコンソールに送信します。それをどうにかしていますか? つまり、次の場合を除き、すべてのエラーは同じファイルになります。 [$? -ne 0]; #これは機能しません。コンソールに行くには以下が必要です "UserInfo.SH FAILEDコピーをmtvst32にコピー">&2;コンソールに送信したい fi しかし、上記の場合、リダイレクトのためnew_fileに移動します。おかげさまで – Kiran

+0

@Kiran:あなたの 'exec >> $ {new_file} 2>&1'(私はあなたの質問でコメントされたので無視した)の前に' exec 3>&2'を追加してFD 2をFD 3にコピーしてください。コンソールには 'echo" ... "&3'となります。 –

+0

甘い..デニスに感謝します。それは動作します。 – Kiran

関連する問題