前两天,在部署项目上线的时候,总是莫名其妙的出错,找了很久,还是没有发现有什么问题。
因为这个项目使用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 版权协议,转载请附上原文出处链接和本声明。