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没有结束符,我觉得应该是引号不匹配的问题,请高手指点 展开
sed -i 's/'$1'BaseAddress/'$Base'/g'
$1是我传进函数的参数,$Base是通过函数之前的代码得到的变量值,
我bash +x test.sh后说我sed -e没有结束符,我觉得应该是引号不匹配的问题,请高手指点 展开
2个回答
展开全部
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和变量的关键词搜索的结果,众多都写上替换单引号为双引号。
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和变量的关键词搜索的结果,众多都写上替换单引号为双引号。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询