sed如何将一个变量替换另一个变量

我的函数test.sh里面其中的一句代码如下:sed-i's/'$1'BaseAddress/'$Base'/g'$1是我传进函数的参数,$Base是通过函数之前的代码得... 我的函数test.sh里面其中的一句代码如下:
sed -i 's/'$1'BaseAddress/'$Base'/g'
$1是我传进函数的参数,$Base是通过函数之前的代码得到的变量值,
我bash +x test.sh后说我sed -e没有结束符,我觉得应该是引号不匹配的问题,请高手指点
展开
 我来答
呆娃丶2436
2015-08-15 · TA获得超过6159个赞
知道答主
回答量:1021
采纳率:100%
帮助的人:54.8万
展开全部
  1、sed命令使用双引号的情况下,可以使用$var(变量)直接引用:
  echo | sed "s/^/$RANDOM.rmvb_/g"
  13562.rmvb_
  2、sed命令使用单引号的情况下,可以使用'"$var"'引用(单引号,然后双引号,变量):
  echo | sed 's/^/'"$RANDOM"'.rmvb_/g'
  2442.rmvb_
  sed中执行外部命令。
  1、sed命令使用单引号的情况下使用'`shell command`'或者'$(shell command)'引用命令执行的结果:
  echo | sed 's/^/'`echo $RANDOM`'.rmvb_/g'
  7700.rmvb_# 结果
  # 上面的命令使用了旧式的命令替换,也可以采用新式的命令替换方法,如下:
  echo | sed 's/^/'$(echo $RANDOM)'.rmvb_/g'
  13856.rmvb_# 结果
  # 下面例子取用当前日期作为结果的一部分,如下:
  echo | sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'
  20130401.rmvb_ # 结果
  2、sed命令中使用双引号的情况下,直接`shell command`或者$(shell command)引用命令执行。
  echo | sed "s/^/$(date +"%Y%m%d").rmvb_/g"
  20130401.rmvb_# 结果
  # 使用环境变量$RANDOM以及旧式命令替换的例子:
  echo | sed "s/^/`echo $RANDOM`.rmvb_/g"
  29484.rmvb_# 结果
  总结一下
  在sed语句里面,变量替换或者执行shell命令,双引号比单引号少绕一些弯子;所以,sed和变量的关键词搜索的结果,众多都写上替换单引号为双引号。
kwydwuf
2010-05-27 · TA获得超过7411个赞
知道大有可为答主
回答量:1527
采纳率:71%
帮助的人:2013万
展开全部
就是引号不匹配的问题(在单引号里就不能再出现单引号了),改成下面的就行了。

sed -i 's/${1}BaseAddress/$Base/g'
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式