구문 오류: 예기치 않은 파일 끝 [닫기]

구문 오류: 예기치 않은 파일 끝 [닫기]
#!/bin/sh
if [ -e $1 ] ; then 
mv $1 $1_$(date +%Y%m%d%H%M) 
fi
exit 0

내 요구 사항은 파일을 찾는 것입니다. 파일이 존재하면 파일 이름을 바꾸고 프로그램을 종료합니다. 파일이 존재하는 경우에만 이름을 바꿔야 합니다.

위의 오류가 발생합니다.

답변1

일반적으로 bash 변수는 항상 큰따옴표로 묶어야 합니다.

예를 들어 $1이 이라고 가정합니다 My File.txt. 귀하의 스크립트는 다음을 수행하려고 합니다.

mv My File.txt My File.txt_201501010101

이는 파일 , 및 을 이동 mv한다는 의미입니다 .MyFile.txtMyFile.txt_201501010101

당신이 원하는 것은 다음과 같습니다.

mv "My File.txt" "My File.txt_201501010101"

자세한 내용과 피해야 할 기타 함정은 아래를 참조하세요. http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target

exit 0스크립트 끝에 있는 PS는 중복됩니다. 스크립트가 오류 없이 완료되면 종료 상태는 암시적으로 0입니다.

관련 정보