当前位置: 技术问答>linux和unix
sed替换掉特殊变量问题
来源: 互联网 发布时间:2016-12-05
本文导语: 写了个test.sh的脚本, 功能:把.profile的CONFIGDIR=$DIR/etc的值替换为输入的路径$1 内容如下: config_dir=$1 #找到需要替换的原始值 old_config_dir=`cat $HOME/.profile | grep CONFIGDIR= |grep -v vi |grep -v grep | awk -F'=' '{print $2}' |a...
写了个test.sh的脚本,
功能:把.profile的CONFIGDIR=$DIR/etc的值替换为输入的路径$1
内容如下:
config_dir=$1
#找到需要替换的原始值
old_config_dir=`cat $HOME/.profile | grep CONFIGDIR= |grep -v vi |grep -v grep | awk -F'=' '{print $2}' |awk '{print $1}' `
echo old_config_dir=$old_config_dir
sed -e 's/$old_config_dir/$config_dir/g' $HOME/.profile > tmp
exit 0
执行命令:sh test.sh /app/dev/etc
输出结果:
old_config_dir=$DIR/etc
查看tmp,变量并未替换成/app/dev/etc
请问我的测试脚本写的有什么问题吗?
功能:把.profile的CONFIGDIR=$DIR/etc的值替换为输入的路径$1
内容如下:
config_dir=$1
#找到需要替换的原始值
old_config_dir=`cat $HOME/.profile | grep CONFIGDIR= |grep -v vi |grep -v grep | awk -F'=' '{print $2}' |awk '{print $1}' `
echo old_config_dir=$old_config_dir
sed -e 's/$old_config_dir/$config_dir/g' $HOME/.profile > tmp
exit 0
执行命令:sh test.sh /app/dev/etc
输出结果:
old_config_dir=$DIR/etc
查看tmp,变量并未替换成/app/dev/etc
请问我的测试脚本写的有什么问题吗?
|
用别的分隔符就行了,比如#
sed -e 's#$old_config_dir#$config_dir#g'
sed -e 's#$old_config_dir#$config_dir#g'