一、发现问题
(1)在Windows 的编辑器编写Shell脚本。

(2)拷贝到Linux 去执行,执行失败。

(3)通过cat -A net.sh,发现脚本文件多了很多^M 字符。

二、解决问题
(1)方法1,在Linux直接修改
sed -i "s/\r//" 文件名

(2)方法2,在Windows使用notepad++转换
首先-显示所有字符
视图-->显示符合-->显示所有字符

底部右键选择,“转换为Unix(LF)”


转换成功,CRLF变为LF

三、总结问题
(1)在Windows编辑Shell脚本,会在行末尾显示^M。这是不同的操作系统对换行处理的结果。
四、补充

如果出现M-oM-;M-?,则重新新建一个脚本文件,把除 M-oM-;M-? 这行外的所有内容拷贝到新脚本文件上,之后补上第一行内容即可。
文章讲述了在Windows编辑的Shell脚本在Linux上执行失败,原因在于Windows的CRLF换行被Linux识别为额外字符。给出了两种解决方案:在Linux中使用sed替换CR,以及在Windows中使用Notepad++将所有字符显示并转换为LF。


&spm=1001.2101.3001.5002&articleId=134924602&d=1&t=3&u=a4ba5da0c7e74d969e5346df1898ba9c)
807

被折叠的 条评论
为什么被折叠?



