エラーをキャプチャしてカスタムメッセージとともにログファイルに記録したいと思います。
次のコマンドを検討してください。
$(find $val -type f -delete) || echo "error in deleting files" |tee -a log.txt
このコマンドは、log.txt ファイルに次の行を書き込みます。
error in deleting files
しかし、ログファイルが次のように見えるように、カスタムメッセージとともにfindコマンドのエラーをログファイルに出力したいと思います。
find: `/home/temp': No such file or directory
error in deleting files
答え1
そこで演算子の優先順位を変更し、find || echo
コマンドをパイプにリダイレクトされる複合コマンドにグループ化する必要がありますtee
。
{ $(find $val -type f -delete) || echo "error in deleting files"; } 2>&1 |tee -a log.txt
または:
($(find $val -type f -delete) || echo "error in deleting files") 2>&1 |tee -a log.txt
リダイレクトはエラーメッセージをから読んでいるパイプにリダイレクトする2>&1
ために使用されますが、出力はすでにそのパイプに自然に入っています。find
tee
echo