파일 이름 변경 후 Bash 복사 명령이 작동하지 않습니다.

파일 이름 변경 후 Bash 복사 명령이 작동하지 않습니다.

Bash 스크립트 안에 이 설치 프로그램 쉘 스크립트가 있습니다.

  1. 기존 텍스트 파일의 이름을 바꾸려고 합니다(백업 중).
  2. 오래된 파일을 삭제합니다
  3. 새 파일을 대상 디렉터리에 복사

    mv /target/data.ini /target/data_$(date +"%Y%m%d_%H%M%S").ini       
    rm -f /target/data.ini     
    cp /install/data.ini /target/data.ini
    

어떤 이유로 cp 명령이 항상 파일을 복사하지는 않습니다.
이전 mv 또는 rm 작업이 완료되지 않았을 가능성이 있습니까?

스크립트의 일부로 실행되기 때문에 오류가 표시되지 않습니다. 명령을 수동으로 실행하면 제대로 작동합니다.

답변1

명령을 수동으로 실행하면 제대로 작동합니다.

단서가 있습니다. 어쩌면 경로 문제일 수도 있습니다. 저는 무엇인가, 특히 스크립트를 작성할 때 항상 명령에 대한 경로를 포함하는 것을 좋아합니다.

$ which date
/usr/bin/date

그런 다음 스크립트에 오류 검사를 추가합니다.

if [ -f /target/data.ini ]
then
  # Note spaces separating the parenthesis from the command
  /bin/mv /target/data.ini /target/data_$( /usr/bin/date +"%Y%m%d_%H%M%S" ).ini
  if [ $? -ne 0 ]
  then
     echo "Error on MV command"
     exit
  fi
  else
    echo "Error: Can't find /target/data.ini"
    exit
  fi
  cp /install/data.ini /target/data.ini  
  #Same type of error checking here 

이렇게 하면 오류가 해결되거나 명확해집니다.

관련 정보