shell脚本每行后面多了一个^M的原因和解决办法

 
更多

shell 脚本每行后面多了一个 ^M 的原因和解决办法。

在开发过程中,有时候不小心将 Windows 本地创建的 shell 脚本(以 .sh 结尾的脚本),传到 linux 系统中,通过 vi 或者 view 命令查看文件时,发现在末尾发现出现了很多 ^M 字符。

^M 是什么?

这个字符就是换行符,是由于跨平台解析的原因,因为 windows 和 Linux 下对行尾的换行的定义不同。

Windows: \r\n

Linux/Unix: \n

Mac: \r

解决方法

如果需要转换,我们只需要转换文件格式即可。你可以选择直接在服务器上调整。包括如下三种方式。

(1)使用 linux 命令 dos2unix filename,直接把文件转换为unix格式

(2)使用 sed 命令sed -i “s/\r//” filename 或者 sed -i “s/^M//” filename 直接替换结尾符为 unix 格式,如果需要批量替换的话,可以直接:

sed -i "s/\r//" /shell/*.sh #将该目录内所有后缀名为 sh 的文件的 \r 替换掉
sed -i "s/\r//" /shell/* #将该目录内所有文件的 \r 替换掉

(3)vi filename 打开文件,执行 :set ff=unix 设置文件为 unix,然后执行 :wq 保存成 unix 格式。

推荐第 2 种。

打赏

本文固定链接: https://www.cxy163.net/archives/3071 | 绝缘体

该日志由 绝缘体.. 于 2023年06月14日 发表在 未分类 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: shell脚本每行后面多了一个^M的原因和解决办法 | 绝缘体
关键字: , , , ,

shell脚本每行后面多了一个^M的原因和解决办法:等您坐沙发呢!

发表评论


快捷键:Ctrl+Enter