1. 程式人生 > >mac 系統編寫的 scpayd部署爬蟲 sh指令碼 伺服器上報錯:syntax error: unexpected end of file / no active project\n\nUnknown

mac 系統編寫的 scpayd部署爬蟲 sh指令碼 伺服器上報錯:syntax error: unexpected end of file / no active project\n\nUnknown

一. 報錯描述

sh指令碼:

sh指令碼報錯:

報錯一: no active project\n\nUnknown

(scrapy_env) [[email protected] FFF]$ sh run_base.sh 
run_base.sh: line 2: $'\r': command not found
{"node_name": "bbb106.abc.cn", "status": "error", "message": "Scrapy 1.5.1 - no active project\n\nUnknown command: list\n\nUse \"scrapy\" to see available commands\n"}

報錯二 :syntax error: unexpected end of file

(scrapy_env) [[email protected] fff]$ sh run_five_sec.sh 
run_five_sec.sh: line 8: syntax error: unexpected end of file

報錯三:{"status": "error", "message": "spider 'xxxxx\r' not found"}

(scrapy_env) [[email protected] fff]$ sh deploy.sh 
deploy.sh: line 2: $'\r': command not found
Packing version 1539048538
Deploying to project "feixiaohao" in http://localhost:6800/addversion.json
Server response (200):
{"node_name": "ccc106.abc.cn", "status": "ok", "project": "fff", "version": "1539048538", "spiders": 1}

(scrapy_env) [
[email protected]
fff]$ sh run_five_sec.sh {"status": "error", "message": "spider 'five_sec_info\r' not found"}

 

二. 原因分析:

       由於.sh檔案的格式為dos格式。而linux只能執行格式為unix格式的指令碼。(因為在dos/window下按一次回車鍵實際上輸入的是“回車(CR)”和“換行(LF)”,而Linux/unix下按一次回車鍵只輸入“換行(LF)”,所以修改的sh檔案在每行都會多了一個CR,所以Linux下執行時就會報錯找不到命令。)

      檢視該指令碼檔案的格式:

              1. vim your.sh  使用vim進入指定指令碼的編輯介面

              2. 輸入冒號":",在":"之後輸入"set ff"然後按回車。如下圖所示

                      

                     

                     即可看到當前指令碼格式是dos!!

三. 解決方法

      把dos格式改為unix:    輸入":set ff=unix" , 按回車即可 (也可以輸入":set fileformat=unix"), 如下圖所示:

  

再次檢視當前sh檔案的格式(輸入 :set ff ), 已經切換成unix模式,再次執行就不會報錯了。

 

 

 

 

-------------------------- END ---------------------------------