
#!/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입니다.