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