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
助けます。
ありがとうございました。それはうまくいった。 同じコードから exec >> $ {new_file} 2>&1 最後のecho文だけをコンソールに送信します。それをどうにかしていますか? つまり、次の場合を除き、すべてのエラーは同じファイルになります。 [$? -ne 0]; #これは機能しません。コンソールに行くには以下が必要です "UserInfo.SH FAILEDコピーをmtvst32にコピー">&2;コンソールに送信したい fi しかし、上記の場合、リダイレクトのためnew_fileに移動します。おかげさまで – Kiran
@Kiran:あなたの 'exec >> $ {new_file} 2>&1'(私はあなたの質問でコメントされたので無視した)の前に' exec 3>&2'を追加してFD 2をFD 3にコピーしてください。コンソールには 'echo" ... "&3'となります。 –
甘い..デニスに感謝します。それは動作します。 – Kiran