![구문 오류: 예기치 않은 파일 끝 [닫기]](https://linux55.com/image/83828/%EA%B5%AC%EB%AC%B8%20%EC%98%A4%EB%A5%98%3A%20%EC%98%88%EA%B8%B0%EC%B9%98%20%EC%95%8A%EC%9D%80%20%ED%8C%8C%EC%9D%BC%20%EB%81%9D%20%5B%EB%8B%AB%EA%B8%B0%5D.png)
#!/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
한다는 의미입니다 .My
File.txt
My
File.txt_201501010101
당신이 원하는 것은 다음과 같습니다.
mv "My File.txt" "My File.txt_201501010101"
자세한 내용과 피해야 할 기타 함정은 아래를 참조하세요. http://mywiki.wooledge.org/BashPitfalls#cp_.24file_.24target
exit 0
스크립트 끝에 있는 PS는 중복됩니다. 스크립트가 오류 없이 완료되면 종료 상태는 암시적으로 0입니다.