Bash 스크립트 안에 이 설치 프로그램 쉘 스크립트가 있습니다.
- 기존 텍스트 파일의 이름을 바꾸려고 합니다(백업 중).
- 오래된 파일을 삭제합니다
새 파일을 대상 디렉터리에 복사
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
이렇게 하면 오류가 해결되거나 명확해집니다.