在xshell下,用notepad++寫了個簡單的shell腳本,內容如下:
1 #!/bin/bash 2 3 if [ "X$force" = "X1" ]; then 4 5 echo 1 6 7 elif [ "X$force" = "X2" ]; then 8 9 echo 2 10 11 elif [ "X$force" = "X3" ]; then 12 13 echo 3 14 15 else 16 17 echo 4 18 19 fi
運行報錯:syntax error near unexpected token `elif'
【解決過程】
1.去notepad++中,視圖->顯示符號->顯示所有符號,然后就看到了預料到的,所有的回車換行都是windows的CR LF:
得知是Linux和windows下的回車換行符不兼容的問題。
所以,剩下的就是去將windows下面的CR LF,轉換為Linux下面的LF,即可。
此處,不需要再麻煩地去用其他dos2unix等工具了,notepad++就可以幫忙搞定:
編輯->檔案格式轉換->轉換為UNIX格式:
即可將所有的 CR LF,轉換為LF:
所以,越加發現notepad++的強大之處了。
然后再運行此shell腳本,即可正常運行了。
【總結】
linux/cygwin下面的shell腳本出現錯誤:
syntax error near unexpected token `elif'
是由於該腳本文件是在windows環境下創建編輯的,其默認是將所有的回車變成:
CR加上 LF,而Linux/Unix中的回車只是LF,所以導致解釋器不認,出現此錯誤。
解決辦法就是,將所有的CRLF轉換為LF即可。
轉換的方法有多種,比如用dos2unix,或用此處的notepad++幫我們轉換,都可以。
轉載於:https://my.oschina.net/zhenggao/blog/3048076