使用sed不能用变量的内容替换文件中的文本

时间:2015-07-29 15:12:49

标签: sed

我有$ subs变量和bbb文件。

$ subs变量内容:

echo $subs
http://somesite21.something.com:8088/premier-esb-emulator-app/services/es bServiceStub

bbb文件内容:

BBBBbbbAAAAA

我尝试使用的命令:

sed "s|bb|${subs}|" bbbb

但它不起作用,错误输出:

sed: -e expression #1, char 85: unterminated `s' command

请告知。提前致谢!

1 个答案:

答案 0 :(得分:0)

以下是我的剧本:

#!/bin/bash

set -x

subs="http://somesite21.something.com:8088/premier-esb-emulator-app/services/es bServiceStub"

sed "s|bb|${subs}|" bbb

这就是bbb文件的样子:

BBBBbbbAAAAA

这是输出:

enter image description here

我知道这是一个糟糕的答案,但它似乎对我有用。

<强> __ UPDATE __

让我们看看如果我说对了你的话:

  • 假设您的工作环境类似于unix
  • Jenkins设置一个变量,即subs。我以为它是一个导出的var
  • 您需要替换名为bbb的文件的某些部分。
  • 替换将是一行代码。

所以,这对我来说仍然有效: enter image description here

我错过了什么吗?

<强> __ UPDATE_II __

我想我在你的案例中发现了问题:你设置env变量的方式。请查看下面的控制台输出,并特别注意我从output.txt文件设置subs var的方式。它按照我的方式工作,所以它也应该在你身边工作。

console: reading subs from output.txt

为了您的方便,我决定在这里添加命令:

cat output.txt
export subs=`cat output.txt`
echo ${subs}
sed "s|bb|${subs}|" bbb

让我们希望这次它能为你效用=]