今天寫了一個shell腳本,老報錯檢查了一下基本的語法並沒有發現錯誤。後來經過百度解決掉了,現總結如下。
錯誤現象:執行shell腳本,老報錯“syntax error near unexpected token `”
解決辦法:vim -b example.sh打開文件,發現文件每一行的末尾多了一個^M,這個問題在使用vim example.sh查看是看不見的,只能通過報錯來判斷使用vim -b才能發現問題。
因爲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格式。