mac 编写sh脚本部署服务器报错:syntax error: unexpected end of file / $‘\r‘:command not found

一. 报错描述

sh脚本:

sh脚本报错:

报错一: no active project\n\nUnknown

(scrapy_env) [aaa@bbb106 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) [aaa@bbb106 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) [aaa@bbb106 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) [aaa@bbb106 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 ---------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值