#!/bin/bash
# error handling
function error_handler() {
echo "Error occurred in script at line: ${1}"
echo "Line exited with status: ${2}"
}
trap 'error_handler ${LINENO} $?' ERR
set -o errexit
set -o errtrace
set -o nounset
# backup dir vars
BACKUPDIR=$(dirname "$0")
# check for directories
if [[ -d $BACKUPDIR/test1 ]]; then
find $BACKUPDIR/test1 -mtime +6 -exec rm -rf {} \;
else
:
fi
上記のテストスクリプトを実行すると、ディレクトリがtest1
存在しない場合は正常に動作します。ただし、そのディレクトリがtest1
ある場合は、そのディレクトリを削除しても次のエラーが発生します。
Test ./testFind.sh
find: ‘./test1’: No such file or directory
Error occurred in script at line: 20
Line exited with status: 1
エラーをどのように停止できますか?
答え1
-prune
削除するディレクトリ内のファイルを検索しfind
ないように指示するには、次のようにします。
find $BACKUPDIR/test1 -mtime +6 -prune -exec rm -rf {} \;