如何在sed命令中使用变量来替换属性文件中的属性值

时间:2014-04-19 11:02:33

标签: linux shell unix centos6

我可以使用以下命令通过硬编码来改变目标值。

sed -ie s/^target=.*/target=google.com/ url.properties

但如果我使用变量我会收到错误。我不知道sed命令如何工作。我只需要设置它的构建系统。

url = google.com
sed -ie s/^target=.*/target=$url/ url.properties

错误是 sed:-e表达式#1,char 25:未终止的`s'命令

2 个答案:

答案 0 :(得分:2)

问题可能正在发生,因为您的URL可能包含/,其中bash将其解释为sed语法,因此像https/www.google.com这样的内容最终会像:

sed -ie 's/^target=.*/target=https/www.google.com/' url.properties

我建议分隔任何特殊字符以避免混淆sed

url=google.com
url=`echo $url | sed -e "s/\//\\\\\\\\\//g"` # delimits backslash in URL's
sed -ie "s/^target=.*/target=$url/" url.properties

答案 1 :(得分:0)

两个问题:

  • bash中的变量赋值中不能有空格
  • 您必须引用sed命令(理想情况下也是网址)

工作示例:

url="google.com"
sed -ie "s/^target=.*/target=$url/" url.properties