您的位置:首页 > 运维架构 > Shell

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

2016-12-19 23:50 826 查看
前两天,在部署项目上线的时候,总是莫名其妙的出错,找了很久,还是没有发现有什么问题。

因为这个项目使用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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息