shell if判斷語句 報錯:syntax error near unexpected token `elif'

轉載: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:

所有的換行都是windows的CRLF

得知是Linux和windows下的回車換行符不兼容的問題。

所以,剩下的就是去將windows下面的CR LF,轉換爲Linux下面的LF,即可。

此處,不需要再麻煩地去用其他dos2unix等工具了,notepad++就可以幫忙搞定:

編輯->檔案格式轉換->轉換爲UNIX格式:

cpp 轉換爲Unix格式

即可將所有的 CR LF,轉換爲LF:

所有的都是linux的LF了

所以,越加發現notepad++的強大之處了。

然後再運行此shell腳本,即可正常運行了。

【總結】

linux/cygwin下面的shell腳本出現錯誤:

syntax error near unexpected token `elif'

是由於該腳本文件是在windows環境下創建編輯的,其默認是將所有的回車變成:

CR加上 LF,而Linux/Unix中的回車只是LF,所以導致解釋器不認,出現此錯誤。

解決辦法就是,將所有的CRLF轉換爲LF即可。

轉換的方法有多種,比如用dos2unix,或用此處的notepad++幫我們轉換,都可以。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章