Replace a string in shell script using a variable
If you want to interpret $replace
, you should not use single quotes since they prevent variable substitution.
Try:
echo $LINE | sed -e "s/12345678/${replace}/g"
Transcript:
pax> export replace=987654321pax> echo X123456789X | sed "s/123456789/${replace}/"X987654321Xpax> _
Just be careful to ensure that ${replace}
doesn't have any characters of significance to sed
(like /
for instance) since it will cause confusion unless escaped. But if, as you say, you're replacing one number with another, that shouldn't be a problem.
Not specific to the question, but for folks who need the same kind of functionality expanded for clarity from previous answers:
# create some variablesstr="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.barstr="someFileName.sally"find=".foo"replace=".bar"result=${str//$find/$replace}echo $result # result is: someFileName.sally because ".foo" was not found