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


在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:

所有的換行都是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++幫我們轉換,都可以。

 

轉載於:https://my.oschina.net/zhenggao/blog/3048076


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM