shell问题汇总

Posted smileyes

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

 





以上是关于shell问题汇总的主要内容,如果未能解决你的问题,请参考以下文章

用于确保在任何给定时间仅运行一个 shell 脚本的 shell 片段 [重复]

Eclipse 中的通用代码片段或模板

shell 脚本 片段

vue2.0 代码功能片段

shell 小问题汇总

shell问题汇总