>
#!/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 {} \;
    
    

  • 이전 debian - 커널을 어떻게 패치합니까?
  • 다음 shell - PID에서 gedit 프로세스를 죽일 수 없습니다