这几天在做系统自动发布的事情,其中用到了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编辑文本。