shell问题汇总

1. sudo执行脚本找不到变量

当普通用户下,设置并export一个变量,然后利用sudo执行echo命令,能得到变量的值,但是如果把echo命令写入脚本,然后再sudo执行脚本,就找不到变量,未能获取到值,如题情况如下:

$ cat demo.sh 
echo $var1 
$ var1=a1
$ export var1                       # export 变量 
$ sudo echo $var1                   # sudo执行echo命令,返回变量值 
>>>a1
$ sudo bash demo.sh                # sudo执行脚本,不能获取变量值 
 
$ bash demo.sh                     # 普通用户执行脚本,返回变量值 
>>>a1

# 解决方案
$ sudo -E bash demo.sh  # sudo 带-E参数,可以获取变量值
>>>a1
 

具体原因还有其他解决方案见http://blog.sina.com.cn/s/blog_4da051a60102uyvg.html

 

2. 替换变量中的字符

$ BRANCH_NAME=feature/ss_tracking

$ echo $BRANCH_NAME

>>>feature/ss_tracking

$ echo ${BRANCH_NAME/\//-}

>>>feature-ss_tracking

 

3. sed遍历替换

#linux
find features -type f |while read file;do sed -i 's/context.feature.mongo/context.mongo/g' $file;done

#mac
find features -type f |while read file;do sed -i "" 's/context.feature.mongo/context.mongo/g' $file;done

 

上一篇:php中的引用


下一篇:PHP设计模式-简单工厂模式