shell 指令碼報錯^M: syntax error near unexpected token
以前寫shell指令碼執行的好好的,今天再執行突然出現了錯誤:
syntax error near unexpected token `
網上搜了下正好有人遇到過這個問題,並且給出瞭解決方式,於是乎就轉過來了:
用命令vi -b 開啟你的SHELL指令碼檔案,你會。發現每行指令碼最後多了個^M。
那麼接下來就要搞清楚這個^M是什麼東東?
long long ago….. 老式的電傳打字機使用兩個字元來另起新行。一個字元把滑動架移回首位 (稱為回車,<CR>
,ASCII碼為0D),另一個字元把紙上移一行 (稱為換行, <LF>
,ASCII碼為0A)。當計算機問世以後,儲存器曾經非常昂貴。有些人就認定沒必要用兩個字元來表示行尾。UNIX 開發者決定他們可以用一個字元來表示行尾,Linux沿襲Unix,也是<LF>
。Apple 開發者規定了用<CR>
。開發 MS-DOS以及Windows 的那些傢伙則決定沿用老式的。
因為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”鍵生成的。
這樣替換掉以後,儲存就可以執行了。當然還有其他的替換方式比如:
a. 一些 linux 版本有 dos2unix 程式,可以用來祛除^M。(同樣的也有 unix2dos )
b.
cat filename1 | tr -d "/r" > newfile
去掉^M生成一個新檔案,還有sed命令等,凡是可以替換的命令都是可以用來新生成一個檔案的。
按照上面所說的,刪除”^M” shell指令碼就執行正常,後來問同事,原來他windows記事本中修改了程式路徑,導致每一行多出了^M。
相關文章
- Solaris syntax error: unexpected end of fileError
- Solaris awk: syntax error near line 1 awk: bailing out near line 1ErrorAI
- 解決 eslint 的 Parsing error: Unexpected token 錯誤EsLintError
- eclipse 引入外部js檔案報Syntax error on token 錯解決方案EclipseJSError
- npm 安裝 uirecorder 報錯 Unexpected tokenNPMUI
- 【shell 】syntax error in conditional expressionErrorExpress
- shell指令碼報錯:[: missing `]‘指令碼
- npm ERR! Unexpected token in JSON at position 0 while parsing near ’ npm ERR! <!–////////NPMJSONWhile
- 執行shell指令碼報錯:-bash: ./test1.sh: /bin/bash^M: ...指令碼
- Laravel 8使用 佇列任務出現 「 syntax error, unexpected ')' 」錯誤解決Laravel佇列Error
- 360 Atals:Cause: java.sql.SQLException: Proxy Warning - near “status“: syntax errorJavaSQLExceptionError
- PbootCMS 升級後網站打不開,解析錯誤 Parse error: syntax error, unexpected ‘:’, expecting ‘{’怎麼辦boot網站Error
- jquery Ajax 請求錯誤 Unexpected tokenjQuery
- jq jsonp跨域報錯之“Unexpected token :”的解決方案JSON跨域
- pecl PHP Parse error: syntax error, unexpected 'new' (T_NEW) 以及 XML缺失解決辦法PHPErrorXML
- ubuntu下pig報錯ERROR 2999: Unexpected internal error. Failed to create DataStorage的解決UbuntuErrorAIAST
- 執行遷移檔案報錯: Syntax error or access violation: 1166 ...Error
- Uncaught SyntaxError: Unexpected token <反思Error
- error unexpected trailing commaErrorAI
- npm install “Unexpected end of JSON input while parsing near”問題NPMJSONWhile
- 關於報錯An unexpected error occurred: “https://registry.yarnpkg.com/react: socket hang up“ErrorHTTPYarnReact
- shell指令碼指令碼
- Appium+python自動化54-appium-doctor報錯已解決(SyntaxError: Unexpected token ...)APPPythonError
- 如何解決"Parse error: syntax error"Error
- shell指令碼執行錯誤 $‘\r‘:command not found指令碼
- 解決shell指令碼錯誤$’r’ command not found指令碼
- shell指令碼編碼格式問題,bin/sh^M: bad interpreter: No such file or directory指令碼
- [報錯:字元太長] SQLSTATE [42000]: Syntax error or access violation: 1071 Specified key was t oo long;字元SQLError
- 完美解決 Uncaught SyntaxError: Unexpected token ‘<‘Error
- shell指令碼案例指令碼
- 常用shell指令碼指令碼
- Linux Shell指令碼Linux指令碼
- shell指令碼(6)-shell陣列指令碼陣列
- jwt生成token報錯JWT
- sh指令碼執行報錯指令碼
- Syntax error, unrecognized expression: li[value=]ErrorZedExpress
- npm install 出現 npm ERR! Unexpected end of JSON input while parsing near '...ostNPMJSONWhile
- [20231102]除錯bash shell指令碼遇到的問題.txt除錯指令碼
- shell 指令碼加密 | shc指令碼加密