解决在windows环境中编写shell脚本,在Linux运行出错的问题

  • Post author:
  • Post category:linux


前两天,在部署项目上线的时候,总是莫名其妙的出错,找了很久,还是没有发现有什么问题。

因为这个项目使用shell脚本来调度程序,而shell脚本实在windows环境中编辑的,然后部署到linux环境中,找了很久,终于发现是shell脚本的问题,windows下编译的shell文件,每一行的结尾是\n\r,而在linux下文件的结尾是\n,这个一般用肉眼是看不出来的。废话不多说,看下面解决方法。


问题原因:windows下编译的shell文件,每一行的结尾是\n\r,而在linux下文件的结尾是\n。

解决思路:

1,利用正则表达式:

在Linux中单个文件时输入命令 :

sed -i 's/\r$//' 文件名	

在Linux中多个文件时输入命令 :

sed -i 's/\r$//'  *.sh       //利用通配符,特别高效

正则表达式

sed -i 's/\r$//' filename
-i    //插入
s     //替代模式
\r$   //表示任何以\r结束的字符
//整句意思是把以\r结束的字符换成空白

2,先在windows编辑好shell,然后在linux中新建一个同名的文件,复制内容过去(这种方法较繁琐,不推荐使用)

命令:vim filename
进入insert模式
复制粘贴所编辑得内容
esc 
:wq

这是我总结的两个方法,有更好的方法可以互相交流,以后有更好的方法再更新。

参考文章:http://blog.csdn.net/hsl_1990_08_15/article/details/50897374



版权声明:本文为u014470784原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。