shell脚本之踩过的坑

来源:互联网 发布:sharepoint是什么软件 编辑:程序博客网 时间:2024/04/29 06:27

1、以${var#*//}这种替换方式为例。自动建仓脚本,遍历一个文件(该文件中是所有仓路径列表),需要在遍历的每行末尾添加.git,gitdir=${rootdir}${repositoryFile}".git"(字符串拼接)。但是在测试的时候,“.git”死活添加不到末尾,总是莫名其妙跑到行首,我以为是换行符造成的,试了好多去掉换行符的方法,仍然不行!!后来我打开文件set ff?看了一下,是dos格式的,于是执行set ff=unix ,问题成功解决~哭

2、统计挑单失败脚本,其中有一步是将挑单失败的change-id追加到根目录的目标文件中,目录大概是这样:~/aaa/bb b/ccc.txt,在我的目录路径中,有个空格,当时没有注意,后来我每次构建job的时候,几天下来,目标文件都是空的,后来发现真正的目标文件在这里:~/aaa/bb 发火

3、判断字符串是是否是以某个字符开头,一开始用${var:0:1}类似这种字符串截取的方式,运行时总是报Bad  substitution错误,这可能是兼容的问题,把sh改为bash就可以了。但是grep+正则也可以实现:echo $str | grep -i "^\[" (判断是否是以字符 [ 开头)。

4、shell脚本中,if 语句两边的空格都要有:if [ -z $var ];变量的赋值等号两边不可以有空格:MSG=$1

5、windows 下的换行符:\r\n,unix下的换行符:\n


原创粉丝点击