91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

syntax error near unexpected t

發布時間:2020-02-25 22:01:01 來源:網絡 閱讀:2301 作者:青苗飛揚 欄目:系統運維

別人寫了一個shell拿過來在linux試用,執行報錯如下:

syntax error near unexpected t

仔細查找了還是沒找到錯誤,一直都是報syntax error near unexpected token `{

網上搜索了一下,找到了端倪,現在簡單整理如下:

 

現在可以判斷給我腳本的這位仁兄很有可能是在windows平臺上編寫的。使用vim -b命令查看文件內容如下:

syntax error near unexpected t 

每一行多了一個^M有木有?

那么接下來就要搞清楚這個^M是什么東東?

long long long ago .....  老式的電傳打字機使用兩個字符來另起新行。一個字符把滑動架移回首位 (稱為回車,<CR>ASCII碼為0D),另一個字符把紙上移一行 (稱為換行, <LF>ASCII碼為0A)。當計算機問世以后,存儲器曾經非常昂貴。有些人就認定沒必要用兩個字符來表示行尾。UNIX 開發者決定他們可以用 一個字符來表示行尾,Linux沿襲Unix,也是<LF>Apple 開發者規定了用<CR>。開發 MS-DOS以及Windows 的那些家伙則決定沿用老式的<CR><LF>

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

基本解決方法有三個:

1.vim編輯器替換

 vim -b filename

 在命令模式下執行%s/^M//g進行替換

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

2.使用dos2unix命令進行轉換

 Dos2unix在有些版本的系統中默認是安裝的。

 Linux中,文本文件用"\n"表示回車換行,而Windows"\r\n"表示回車換行。所以在Linux中使用Windows的文本文件常常會出現錯誤。為了避免這種錯誤,Linux提供了兩種文本格式相互轉化的命令:dos2unixunix2dosdos2unix"\r\n"轉化成"\n"unix2dos"\n"轉化成"\r\n"
     命令dos2unixunix2dos的使用非常簡單,格式為:dos2unix filename

   如果想了解更多,可以查看手冊。man dos2unix

3.使用文本處理工具

 cat filename | tr -d "/r" > newfile 去掉^M生成一個新文件。

同樣還有sed命令等,凡是可以替換的命令都是可以用來新生成一個文件的。

 

另外,a.windows平臺上通過notepad++工具也可以完成轉換,具體參考百度經驗http://jingyan.baidu.com/article/9f63fb91d014b8c8410f0e7a.html

 

b.在上傳到linux平臺過程中,可以選擇上傳類型為二進制,也可以避免此問題,大家可以試一下

 

syntax error near unexpected t

A.

B.

 


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乐山市| 潞城市| 陆丰市| 天等县| 临沭县| 苍山县| 肃北| 攀枝花市| 阳朔县| 福贡县| 临沭县| 砀山县| 尚义县| 曲麻莱县| 昌乐县| 汝阳县| 大邑县| 股票| 镇平县| 开平市| 哈巴河县| 临桂县| 平远县| 襄樊市| 广昌县| 桐城市| 海门市| 辽阳县| 丰台区| 南澳县| 建始县| 清徐县| 彭水| 伽师县| 万宁市| 崇义县| 德州市| 甘德县| 沂水县| 武宣县| 当雄县|