轉載:http://blog.sina.com.cn/s/blog_695ef52801018f09.html
在xshell下,用notepad++寫了個簡單的shell腳本,內容如下:
#!/bin/bash
if [ "X$force" = "X1" ]; then
echo 1
elif [ "X$force" = "X2" ]; then
echo 2
elif [ "X$force" = "X3" ]; then
echo 3
else
echo 4
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++幫我們轉換,都可以。