报错处理: syntax error near unexpected token `$‘\r‘‘ (linux中的^M)

1 问题描述

在windows 上使用MobaXTerm,在远程linux服务器上写脚本的时候,遇到了一个问题

windows操作系统 ssh 工具介绍:MobaXterm_UQI-LIUWJ的博客-CSDN博客

我的脚本如下,是一个很简单的脚本(trmf.sh)

#!/bin/bash
for((i=1;i<24;i++));do
  echo $i;
done;

 在windows的git bash 下是可以跑的,但是在linux上则会出问题

2 解决问题

为什么会出现这个问题呢?我们在linux环境中用 vim看一下这个脚本

vim -b trmf.sh

 发现每一行的末尾,会出现一个^M的东西

解决方法很简单,在命令行里输出这样一行指令即可

sed -i 's/\r//g' trmf.sh

然后便可以正常跑了

 再次 vim 这个程序 ^M已经没有了 

3 根本原因 

        Windows 格式的文件,用 0D 0A (CR+LF)作为换行符,而Linux 的则是以0A(LF) 作为换行符

        所以Windows 格式下的文本文件到了Linux 的话,换行符就会多出来一个 0D(CR) ,在Linux中显示为 ^M

        所以解决方法是在字符层面直接删除 ^M 即可

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

UQI-LIUWJ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值