![簡單腳本的問題:(](https://rvso.com/image/1083746/%E7%B0%A1%E5%96%AE%E8%85%B3%E6%9C%AC%E7%9A%84%E5%95%8F%E9%A1%8C%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 電腦編輯了此腳本,並且 a\r
添加到了行尾。您可以透過運行來檢查該行上是否有任何內容
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