linux 执行sh_linux下执行脚本 sh -x XXX.sh 调试中存在大量/r 的问题

1a8718b1f12cb0621d4f53ec93bc4038.png

今天调试一个脚本,每句结尾都有大量/r 换行字符。检验了很多次都没调试成功。

后来才发现这个脚本是在windows环境下编写的,直接ftp拖到了linux服务器上。

vi下用 :set ff 查看文件的编码格式,果然是dos的。

用:set ff=unix 将文件变为unix格式,就调试成功了。

备注点1 win和linux换行的区别:

Unix体系里,每行结尾只有“<换行>”,即“n”;

Windows体系里面,每行结尾是“<换行><回 车>”,即“nr”。

一个直接结果是,Unix体系下的文件在Windows里打开的话,所有文字会变成一行;

而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。

备注点2 文件格式转换的方式:

方法1:
在命令模式下:输入:%s/^M//g 然后,回车即可替换

注,其中”^M”的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的

方法2:

使用vi打开文本文件
vi dos.txt
命令模式下输入
:set fileformat=unix
:w

方法3:

使用sed 工具
sed ’s/^M//’ filename > tmp_filename

方法4:

既然window下的回车符多了‘r’,那么当然通过删除‘r’ ,也可以实现:
tr -d ‘r’

方法5:(最常用的方法)

$ dos2unix filename

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值