1 问题描述
在windows 上使用MobaXTerm,在远程linux服务器上写脚本的时候,遇到了一个问题
windows操作系统 ssh 工具介绍:MobaXterm_UQI-LIUWJ的博客-优快云博客
我的脚本如下,是一个很简单的脚本(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 即可