解决在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中单个文件时输入命令 :
在Linux中多个文件时输入命令 :
正则表达式
2,先在windows编辑好shell,然后在linux中新建一个同名的文件,复制内容过去(这种方法较繁琐,不推荐使用)
这是我总结的两个方法,有更好的方法可以互相交流,以后有更好的方法再更新。
参考文章:http://blog.csdn.net/hsl_1990_08_15/article/details/50897374
因为这个项目使用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
相关文章推荐
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- windows下编写shell脚本运行出错问题
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- windows下编写shell脚本放到linux运行问题
- windows下编写的Shell脚本在Linux下运行错误的解决方法
- windows下编写的bash脚本拖入linux环境下脚本出错之编码问题
- shell脚本从windows下发送到linux下运行失败的问题
- windows下写的shell脚本在linux执行出错的解决办法
- windows下编写的shell脚本如何在Linux运行
- java linux和windows下文件路径间隔符的写法——解决linux下程序在windows下运行时的上传文件出错问题
- windows下写的shell脚本在linux执行出错的解决办法
- Windows下记事本编辑的Shell脚本放到Linux下执行出错,格式问题(/bin/bash^M: bad interpreter: 没有那个文件或目录)
- [linux]windows上编写的shell脚本linux上报错,Bom问题
- (原创)Windows下编译的Shell脚本不能再Linux中运行的解决办法
- windows下写的shell脚本在linux执行出错的解决办法
- sublime text 2中Windows下编写的脚本在Linux平台上运行遇到字符问题
- windows下写的shell脚本在linux执行出错的解决办法
- 朋友的一个问题:Linux开机如何自动运行自己编写好的shell脚本
- windows下编写的shell脚本在Linux下运行,提示Syntax error
- linux执行windows编写的shell脚本出错