首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用变量替换shell脚本中的字符串

使用变量替换shell脚本中的字符串
EN

Stack Overflow用户
提问于 2010-07-22 13:28:31
回答 10查看 495.8K关注 0票数 109

我使用下面的代码替换shell脚本中的字符串。

代码语言:javascript
复制
echo $LINE | sed -e 's/12345678/"$replace"/g'

但它将被$replace代替,而不是该变量的值。

有谁能说出哪里出了问题吗?

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2010-07-22 13:31:35

如果你想解释$replace,你不应该使用单引号,因为单引号会阻止变量替换。

尝试:

代码语言:javascript
复制
echo $LINE | sed -e "s/12345678/${replace}/g"

文字记录:

代码语言:javascript
复制
pax> export replace=987654321
pax> echo X123456789X | sed "s/123456789/${replace}/"
X987654321X
pax> _

只需小心确保${replace}没有任何对sed有意义的字符(例如/ ),因为除非进行转义,否则它将导致混淆。但是,如果像您所说的那样,用一个数字替换另一个数字,这应该不是问题。

票数 170
EN

Stack Overflow用户

发布于 2010-07-22 13:38:23

您可以使用shell (bash/ksh)。

代码语言:javascript
复制
$ var="12345678abc"
$ replace="test"
$ echo ${var//12345678/$replace}
testabc
票数 83
EN

Stack Overflow用户

发布于 2016-06-28 06:54:57

不是专门针对这个问题的,但对于那些需要从前面的答案中清楚地扩展相同功能的人来说:

代码语言:javascript
复制
# create some variables
str="someFileName.foo"
find=".foo"
replace=".bar"
# notice the the str isn't prefixed with $
#    this is just how this feature works :/
result=${str//$find/$replace}
echo $result    
# result is: someFileName.bar

str="someFileName.sally"
find=".foo"
replace=".bar"
result=${str//$find/$replace}
echo $result    
# result is: someFileName.sally because ".foo" was not found
票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3306007

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档