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