1行にスクリプトエラーメッセージを書く

1行にスクリプトエラーメッセージを書く

コマンドを実行しています。

mv /prod/new/outputlog/error.log  /prod/hist/new/outputlog/error.log.32423423424

シェルスクリプトを使用します。

ファイルerror.logが利用できないため、コマンドは自動的にログファイルにエラーメッセージを書き込みます。エラーメッセージはmv: cannot rename /prod/new/outputlog/error.log /prod/hist/new/outputlog/error.log.324234234242行に折り返されません。

これはシステムによって生成されたエラーメッセージであるため、エラーメッセージの各行の長さを制御することはできません。メッセージの長さが80に達したら、システムはメッセージをラップしたいと思います。

答え1

mv名前を変更する前にソースファイルが存在することを確認して、これらの試みを保護できます。

test -f /prod/new/outputlog/error.log &&
    mv /prod/new/outputlog/error.log /prod/hist/new/outputlog/error.log.32423423424

あるいは、エラーメッセージをキャプチャして2行に分割してみることもできます。

mv /prod/new/outputlog/error.log /prod/hist/new/outputlog/error.log.32423423424 2>&1 |
    fmt -s -w80 >&2

答え2

エラーメッセージを混同しないでください。ファイルを移動する前にテストしてください。

if [ -f /prod/new/outputlog/error.log ]; then
    mv /prod/new/outputlog/error.log \
       /prod/hist/new/outputlog/error.log.32423423424
fi

またはショートカットロジックを使用してください。

[ -f /prod/new/outputlog/error.log ] &&
mv /prod/new/outputlog/error.log \
    /prod/hist/new/outputlog/error.log.32423423424

ログファイルの欠落が報告された問題の場合は、別途実行してください。

if [ -f /prod/new/outputlog/error.log ]; then
    mv /prod/new/outputlog/error.log \
       /prod/hist/new/outputlog/error.log.32423423424
else
    echo 'ERROR: /prod/new/outputlog/error.log is missing' >&2
fi

答え3

error.logを「損傷」させる代わりに、見たいときに切り取るのはどうでしょうか?

cut -c 1-80 error.log | less

関連情報