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

Posted UQI-LIUWJ

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了报错处理: syntax error near unexpected token `$‘ ‘‘ (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 即可

以上是关于报错处理: syntax error near unexpected token `$‘ ‘‘ (linux中的^M)的主要内容,如果未能解决你的问题,请参考以下文章

elasticsearch启动报错 syntax error near unexpected token `<'

exp命令报错:-bash: syntax error near unexpected token `(‘

执行shell脚本报错:syntax error near unexpected token `或syntax error: unexpected end of file

linux的shell脚本报错“syntax error near unexpected token `”的解决

关于报错“syntax error near unexpected token `”和回车换行

linux下打开一个带有括号的文件。报错bash: syntax error near unexpected token `('