shell问题汇总
2024-10-08 09:30:41
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
最新文章
- Angularjs学习笔记9_JSON和JSONP
- zookeeper session tracker机制分析
- ValueError: Attempted relative import in non-package
- 24种设计模式--策略模式【Strategy Pattern】
- c++的getline()和get()函数
- openSUSE 安装
- 开源Dubbox
- 【转】Mapreduce部署与第三方依赖包管理
- 8-过滤器Filter和监听器Listener
- HttpReponse
- openGL实现图形学扫描线种子填充算法
- [亲测哪步都不能省可用]联想ThinkPad E450装系统后开机一直停留在BootMenu上,无法选择硬盘进入
- Inotify+Rsync实现Linux服务器文件同步
- T-SQL基础(二)之关联查询
- TZOJ 4839 麦森数(模拟快速幂)
- Netty 粘包/拆包应用案例及解决方案分析
- SQL语句(十五)视图
- AB压力测试工具
- SDK管理利器——sdkman
- Python之数据库导入(py3.5)