码迷,mamicode.com
首页 > 移动开发 > 详细

关于苹果命令sed与centos使用的区别

时间:2015-12-17 19:26:52      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:苹果   命令行   sed   

关于苹果命令行与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

关于苹果命令sed与centos使用的区别

标签:苹果   命令行   sed   

原文地址:http://10309478.blog.51cto.com/10299478/1725703

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!