关于苹果命令行与centos命令行中sed的区别
昨天接到领导的任务,让我写一个脚本,目的是是指定的某一个数字自增,接到任务之后我觉得这个任务太简单了,但是我大意了。
大意是要吃亏的,所以我吃亏了。
首先我先锁定了目标值,但是目标值不是唯一的,我只能先锁定到目标值的上级目标,这个上级目标的值是文件信息中唯一的。所以OK,开始干活。
取到值之后那就是自增和替换了,自增没问题,替换呢就用sed吧。
令我没想到的是sed在苹果的命令行中使用方法和centos是有区别的。
centos:sed -i ‘$bs#<string>$c</string>#<string>$NUM</string>#g‘ $DIR$FILE mac: sed -i "" ‘$b s#<string>$c</string>#<string>$NUM</string>#g‘ $DIR$FILE
就多了一对“”,坑死了,感谢http://blog.csdn.net/dawn_moon/article/details/8547408
一想到命令行成功了,瞬间美美哒,可是一放到脚本中,瞬间爆炸。
原因就是脚本中运行,没有显示出$b和s这两个参数,经过我反复的对双引号,单引号,单引号加双引号,双引号加单引号,单引号加双引号加单引号,均无果。
后来在$b和s之间加了一个空格,满血复活。
下面是本人写的垃圾的脚本,希望可以帮助到新手。
苹果系统命令行 #!/bin/bash DIR=/Users/admin/config/teacher/Develop/ FILE=Info.plist.ori if [ $USER=admin ]; then echo "this user is admin" cp $DIR$FILE $DIR$FILE.bak a=`cat -n $DIR$FILE|grep "<key>CFBundleVersion</key>"|awk ‘{print $1}‘` b=$(($a+1)) c=`cat -n $DIR$FILE|grep $b|awk -F "[<>]" ‘{print $3}‘` NUM=$(($c+1)) sed -i "" ‘$b s#<string>$c</string>#<string>$NUM</string>#g‘ $DIR$FILE else echo "please use admin" fi
本文出自 “为了部落!” 博客,请务必保留此出处http://10309478.blog.51cto.com/10299478/1725703
原文地址:http://10309478.blog.51cto.com/10299478/1725703