![간단한 스크립트에 문제가 있습니다 :(](https://rvso.com/image/1083746/%EA%B0%84%EB%8B%A8%ED%95%9C%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%20%EB%AC%B8%EC%A0%9C%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4%20%3A(.png)
누군가 이 스크립트가 올바르게 실행되지 않는 이유를 알려주실 수 있나요? 계속 오류가 발생하므로 if 문에 문제가 있는 것 같습니다.
/home/sinttx/Development/backup/ddbackup.sh: line 18: syntax error near unexpected token `then'
/home/sinttx/Development/backup/ddbackup.sh: line 18: if [ "$exit" -eq 0 ] ; then'
스크립트:
#!/bin/bash
#(SINTTX) Function and if statement to backup/clone /dev/???.
echo "
THIS WILL COMPLETE A BACKUP OF DESIRED /DEV "
echo -n "Enter desired name for saved file (File will be saved with extention .iso) and press [ENTER]: "
read iso
echo -n "Enter the device to be duplicated/backed up (Eg /dev/sda) and press [ENTER]: "
read dev
echo -n "Enter the desired path/location for the backup file (Eg /home/USERNAME/backups/) and press [ENTER]: "
read path
echo "PLEASE ENTER THE SUDO PASSWORD (IF PROMPTED) AND WAIT :-)
NOTE: THIS COULD TAKE SOME TIME DEPENDING ON FILE SIZE AND HARDWARE SPEED!!"
sudo dd if="$dev" of="$path"/"$iso"
exit=$?
if [ "$exit" -eq 0 ] ; then
echo "SUCCESS"
else
echo "BACKUP HAS SUFFERED AN ERROR AND DID NOT COMPLETE SUCCESSFULLY"
fi
답변1
처럼@사이러스가 제안했습니다, 문제를 일으키는 인쇄할 수 없는 문자가 있을 수 있습니다. 가장 가능성 있는 이유는 Windows 시스템에서 이 스크립트를 편집한 후 \r
줄 끝에 a가 추가되었기 때문입니다. 다음을 실행하여 해당 줄에 항목이 있는지 확인할 수 있습니다.
grep 'if [ "$exit"' script.sh | od -c
인쇄되지 않는 문자를 포함하여 모든 문자가 표시됩니다.
실제로 거기에 있는 경우 \r
다음을 실행하여 문제를 해결할 수 있습니다."
sed -i 's/\r//' script.sh
또는 dos2unix
( sudo apt-get install dos2unix
)을 설치하고 실행합니다.
dos2unix script.sh > fixed.sh