linux的shell腳本報錯“syntax error near unexpected token `”的解決

    今天寫了一個shell腳本,老報錯檢查了一下基本的語法並沒有發現錯誤。後來經過百度解決掉了,現總結如下。 

    錯誤現象:執行shell腳本,老報錯“syntax error near unexpected token `”

    解決辦法:vim -b example.sh打開文件,發現文件每一行的末尾多了一個^M,這個問題在使用vim example.sh查看是看不見的,只能通過報錯來判斷使用vim -b才能發現問題。

wKioL1idxdbzc0yuAAATvQhmgZ0815.pngwKioL1idxkDhTwRcAAAjrGbrjzk867.png

    因爲MS-DOS及Windows是回車+換行來表示換行,因此在Linux下用Vim查看在Windows下用VC寫的代碼,行尾後的“^M”符號,表示的是符。

  在Vim中解決這個問題,很簡單,在Vim中利用替換功能就可以將“^M”都幹掉,鍵入如下替換命令行:

  1)vi -b setup.sh

  2)在命令編輯行<就是: 按ESC鍵 然後shift+:冒號>輸入:%s/^M//g

  注意:上述命令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”鍵生成的。

  這樣替換掉以後,保存就可以執行了。當然還有其他的替換方式比如:

    一些linux版本有 dos2unix 程序,可以用來去除^M。

    錯誤原因:寫腳本時,先使用了UltraEdit編輯好了腳本,然後存在了版本是windos的電腦上,隨後傳輸到linux系統內去執行的。可能是存儲文本時啓用了默認的DOS格式。


 



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