bash 스크립트가 내 변수 이름 중 하나의 이름을 딴 파일을 생성하는 이유는 무엇입니까?

bash 스크립트가 내 변수 이름 중 하나의 이름을 딴 파일을 생성하는 이유는 무엇입니까?

나는 이 bash 스크립트를 사용하여 내 서버의 3개 백업을 유지하고 있습니다. 어떤 이유로 내 변수 중 하나의 이름으로 빈 파일을 무작위로 생성합니다. 선택한 변수 이름은 무작위로 나타나며 실행될 때마다 파일을 생성하지 않습니다.

Ubuntu Server 16.04LTS를 실행 중입니다.

스크립트는 예상대로 완벽하게 작동합니다. 나는 bash가 때때로 그 파일을 생성하는 이유를 알고 싶습니다.

참고: Samba 주소, CIFS 자격 증명 위치 등 일부 민감한 정보는 생략했습니다. 이는 의도적인 것이며 실제 스크립트에서는 정확합니다.

bash backup.bashbash를 사용하여 명시적으로 명령을 사용하여 cron 작업에서 이 스크립트를 실행합니다.

#!/bin/bash

## The number of backups that we want to keep
MAX_BACKUPS=3

## The directory to store the backups
BACKUP_DIR="OMITTED"

## The address of the Samba Share
REMOTE_ADDR="OMITTED"

## What we want to name the backup
BACKUP_NAME="$(date +"%m_%d_%Y")_backup.tar.gz"

## Mount the Samba Share to the backup directory
mount -t cifs -o credentials=OMITTED,noperm $REMOTE_ADDR $BACKUP_DIR

## Make todays backup
tar -cpzvf $BACKUP_DIR/$BACKUP_NAME --exclude-from=/backup_scripts/backup.exclude /

## The number of backups that we now have
COUNT="$(find $BACKUP_DIR -maxdepth 1 -type f -name '*_backup.tar.gz' | wc -l )"

## If we have more backups than MAX_BACKUPS
if ((COUNT > MAX_BACKUPS)); then
  ## Delete the oldest file (DETERMINED BY MODIFICATION DATE)
  cd $BACKUP_DIR
  rm "$(ls -t | tail -1)"
fi

# Unmount the Samba Share for safety
umount $BACKUP_DIR

답변1

편집: @StéphaneChazelas가 지적했듯이 문제는 스크립트가 호출되지 않고 구성이 작동하지 않는다는 것일 수 bash있습니다 (( )). bash쉘 에서 시도 하거나 사용하십시오.bash my_script.sh

그리고 이것이 끔찍하게 실패할 가능성도 있습니다 rm. 읽어주세요이 FAQ.

관련 정보