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

구문 오류: 예기치 않은 파일 끝
#!/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입니다.

관련 정보