shell腳本報錯:"syntax error: unexpected end of file" 原因和解決


在windows用notepad++編輯的shell腳本,拷貝到centos執行時,報錯如下:

 

導致報錯的可能原因:

原因1:Windows的文本默認是dos格式,換行符 CR LF。Linux的文本是unix格式,換行符 LF。另外,Mac系統下文本換行符為 CR

在notepad++點擊“顯示所有字符”即可看到換行符,如下圖:

解決1:將dos格式轉成unix格式,再執行腳本就不會報錯了。

轉換方式1:在windows中,notepad++編輯器右下角可直接修改文檔格式,如下圖:

 

 

轉換方式2:在Linux中,用vim打開腳本

用 :set ff 可查看文件格式

用 :set ff=unix 可設置文件格式為unix:

 

 

 

轉換方式3:在Linux中,用dos2unix工具轉換:

yum -y install dos2unix

dos2unix myScript.sh

 

原因2:shell腳本語法格式錯誤。

解決2:用以下命令快速檢查腳本是否有語法錯誤:

sh -n myScript.sh

命令有輸出則是有語法錯誤,檢查腳本,更正錯誤即可。

 PS:用"-n" 選項只會讀取shell腳本,用於測試shell腳本是否存在語法錯誤,但不會實際執行腳本。

================== 我的報錯原因:=================

排查了很久,發現不是格式問題導致的報錯,而是語法錯誤導致的,如下圖:

 

2019-12-25,Merry Christmas~ 


免責聲明!

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



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