windows环境写的shell脚本放在linux下运行出错

在windows写了个Ubuntu换源脚本,直接传到linux中运行时报错

a.sh: line 2: $'\r': command not found
检测到您的Ubuntu系统版本为:xenial
a.sh: line 6: $'\r': command not found
**********************************
请选择镜像源:

    1.阿里      
    2.清华     
    3.网易
    4.中科大
    
**********************************
': not a valid identifierrceChoice
a.sh: line 18: $'\r': command not found
a.sh: line 25: syntax error near unexpected token `$'in\r''
'.sh: line 25: `case $sourceChoice in

1、最开始直接以为语法存在问题,就直接在linux中写简单脚本测试,并无问题,又仔细检查脚本,没看出什么问题,索性直接在linux直接重写,完美运行。
2、感觉问题应该在编码这,仔细看了看报错中有$'in\r',大概猜到是换行符的问题,上百度查到:在windows下编写shell脚本回车符是\n\r,而linux下的回车符是\n。所以决定在windows小写的脚本中添加sed -i 's/\r$//' $0,解决问题。还看到一种解决办法,就是在linux下运行脚本的时候,修改下脚本的的编码格式,vim 脚本,底行模式,输入

set fileformat=unix

至此,问题明朗,得一个教训就是,出现错误的时候,一定认真查看报错,任何比较微小的问题(比如这种回车符),都可能引起大的问题,而且通过后面的错误信息还不好定位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值