dos和unix换行符的转换--俺又被这无形字符害了一把
来源:互联网 发布:淘宝法律法规限制下单 编辑:程序博客网 时间:2024/04/28 16:29
这几天在做系统自动发布的事情,其中用到了shell脚本。真是够郁闷的,本来跑得好好的脚本,在我加了一段配置后跑不起来了。
我先是写了一段脚本来读取配置文件。
配置文件和ant的properties文件格式一样,很简单形如:
user=abc
host=myhost
配置文件getconfig.sh,读取参数1的配置选项,是这么写的:
FILE_ENV_PROP="myproject.prop"
echo `grep ^$1= $FILE_ENV_PROP | awk -F = '{print $2}'`
就是读取文件中以配置项开头,等号以后的部分。
加了一段配置后死或跑不起来,原来一直有的。本来一直以为是getconfig.sh的原因,因为刚好我改过一点。后来怀疑是不是shell的解释器被人给改了,还是找不出原因。终于在另外一台机器上看到了原来的脚本,是可以跑通过的。ftp过来以后还是跑不起来,最后才发现,是配置文件不一样。原来我增加配置项时是在windows改的,每个行后面是多了一点东西的,但是在linux下看不出来,用vi和more都是看不到(这个和solaris不一样啊,solaris的vi是可以看到一个^M符号的)。所以我也一直没在意,被以前的solaris经验忽悠了。用ultraedit的16进制方式可以很明显地看出来:windows的换行是0D0A,unix的换行只有0A。
这样的事情以前也碰过,怎么还是会再犯呢?看来要避免还是挺难的。只有凭经验了,而且要养成如果是linux类型的系统,坚持只使用vi编辑文本。
----------------------以下20070307添加-------------------------------------------
那怎么把dos格式转成unix格式呢?我以前的经验是用ultraedit,在“文件-转换”菜单里有一个这样的工具。但是这次我没成功,一查网上提供了两个方法:
1)利用vi,在vi上打:set ff?,可以显示当前的类型。打:set ff=unix,就可以转换行符号为unix类型;打:set ff=dos那就是dos类型,ff也就是fileformat的意思,把ff写全名fileformat也是可以的。
2)利用sed,执行sed s/^M//g file1 > file2 ,也可以转。但是要注意^M是先按住ctrl-v在按m打出来的。不是字符串^M。
出现更有意思的情况。cvs这个王八羔子,我好不容易把dos转成unix格式,但是一提交到cvsserver,再从别的机器下载下来,换行符号又变回去了。而且,cvs是不区别这两种换行符的。大概是因为服务器使用cvsnt的关系,又或者是在取文件时转的。
最后我采取了一个蹩脚的做法,在每次取下文件后,用sed转换一次。
- dos和unix换行符的转换--俺又被这无形字符害了一把
- Dos和Unix的换行 转换
- 转换Unix和Windows的换行符
- unix 和 dos 中换行的区别
- dos, unix 换行符
- Unix/DOS换行 符转换的程序,学习一下C对文件的处理
- linux和Dos下换行符转换
- dos文件和unix文件的转换
- 唉,又被MS羞辱了一把。
- 我又被google愚了一把
- gedit 增加外部工具,转换unix换行符为DOS换行符
- dos和unix文件格式转换
- 转换Windows/DOS换行符
- Linux和dos下的换行符
- ICQ又火了一把
- DOS/Windows和Linux/Unix间的文档格式转换
- DOS/Windows和Linux/Unix间的文件格式转换
- DOS/Windows和Linux/Unix间的文件格式转换
- 2006年高考作文爆笑集锦
- 远离“电脑病”完全手册
- JSP 编程技巧集锦
- 我的
- 我的2007,做最好的自己,我能!
- dos和unix换行符的转换--俺又被这无形字符害了一把
- 给年轻工程师的十大忠告
- 两个分页存储过程
- DisplayTag自定义排序
- 字符串函数源码
- 关于点阵字的实现问题
- 关于利用金山词霸的词库
- 取/*与*/之间的数据
- XNA下的自然场景实时渲染