我使用下面的代码替换shell脚本中的字符串。
echo $LINE | sed -e 's/12345678/"$replace"/g'
但它将被$replace
代替,而不是该变量的值。
有谁能说出哪里出了问题吗?
发布于 2010-07-22 13:31:35
如果你想解释$replace
,你不应该使用单引号,因为单引号会阻止变量替换。
尝试:
echo $LINE | sed -e "s/12345678/${replace}/g"
文字记录:
pax> export replace=987654321
pax> echo X123456789X | sed "s/123456789/${replace}/"
X987654321X
pax> _
只需小心确保${replace}
没有任何对sed
有意义的字符(例如/
),因为除非进行转义,否则它将导致混淆。但是,如果像您所说的那样,用一个数字替换另一个数字,这应该不是问题。
发布于 2010-07-22 13:38:23
您可以使用shell (bash/ksh)。
$ var="12345678abc"
$ replace="test"
$ echo ${var//12345678/$replace}
testabc
发布于 2016-06-28 06:54:57
不是专门针对这个问题的,但对于那些需要从前面的答案中清楚地扩展相同功能的人来说:
# 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
https://stackoverflow.com/questions/3306007
复制相似问题