码迷,mamicode.com
首页 > 系统相关 > 详细

shell问题汇总

时间:2019-02-14 15:10:00      阅读:193      评论:0      收藏:0      [点我收藏+]

标签:get   pre   log   blank   通用   ref   targe   branch   替换   

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

 

shell问题汇总

标签:get   pre   log   blank   通用   ref   targe   branch   替换   

原文地址:https://www.cnblogs.com/smileyes/p/10374567.html

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