別人寫了一個shell拿過來在linux試用,執(zhí)行報錯如下:
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),茶陵企業(yè)網(wǎng)站建設(shè),茶陵品牌網(wǎng)站建設(shè),網(wǎng)站定制,茶陵網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,茶陵網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
仔細查找了還是沒找到錯誤,一直都是報syntax error near unexpected token `{
網(wǎng)上搜索了一下,找到了端倪,現(xiàn)在簡單整理如下:
現(xiàn)在可以判斷給我腳本的這位仁兄很有可能是在windows平臺上編寫的。使用vim -b命令查看文件內(nèi)容如下:
每一行多了一個^M有木有?
那么接下來就要搞清楚這個^M是什么東東?
long longlongago ..... 老式的電傳打字機使用兩個字符來另起新行。一個字符把滑動架移回首位(稱為回車,
因為MS-DOS及Windows是回車+換行來表示換行,因此在Linux下用Vim查看在Windows下用VC寫的代碼,行尾后的“^M”符號,表示的是換行符。
基本解決方法有三個:
1.用vim編輯器替換
vim -b filename
在命令模式下執(zhí)行%s/^M//g進行替換
注意:上述命令行中的“^M”符,不是“^”再加上“M”,而是由“Ctrl+v”、“Ctrl+M”鍵生成的。
2.使用dos2unix命令進行轉(zhuǎn)換
Dos2unix在有些版本的系統(tǒng)中默認是安裝的。
在Linux中,文本文件用"\n"表示回車換行,而Windows用"\r\n"表示回車換行。所以在Linux中使用Windows的文本文件常常會出現(xiàn)錯誤。為了避免這種錯誤,Linux提供了兩種文本格式相互轉(zhuǎn)化的命令:dos2unix和unix2dos,dos2unix把"\r\n"轉(zhuǎn)化成"\n",unix2dos把"\n"轉(zhuǎn)化成"\r\n"。
命令dos2unix和unix2dos的使用非常簡單,格式為:dos2unix filename
如果想了解更多,可以查看手冊。man dos2unix
3.使用文本處理工具
cat filename | tr -d "/r" > newfile 去掉^M生成一個新文件。
同樣還有sed命令等,凡是可以替換的命令都是可以用來新生成一個文件的。
另外,a.在windows平臺上通過notepad++工具也可以完成轉(zhuǎn)換,具體參考百度經(jīng)驗http://jingyan.baidu.com/article/9f63fb91d014b8c8410f0e7a.html
b.在上傳到linux平臺過程中,可以選擇上傳類型為二進制,也可以避免此問題,大家可以試一下
A.
B.