如何在sedscript中使用variables

我在shell脚本中设置了一个variables,然后调用一个sed脚本,并在sed脚本中使用variables这似乎并不工作,我需要帮助如何实现

  1. 以下在命令行工作

sed -e“s / text / $ VAR”testing文件

  1. 以下不起作用

test.sh

导出VAR = somevar
sed -f sedfiletesting文件

testfile的

这是一个testing文件

sedfile

S /文本/ $ VAR /

也试过

S /文本/ $ {VAR} /

结果

这是一个$ VAR文件

预期产出

这是一个somevar文件

在您的示例的命令行版本上的软引号允许在shell执行sed指令之前通过shellshell进行shell扩展

sedfile不是shell脚本,它是由sed解释的sed脚本,所以不会发生variables的shell扩展。 这是根本不会工作AFAIK。

你可能希望使用here文档语法生成sedfile

cat <<foobar > sedfile s/text1/${VAR1}/ s/text2/${ANOTHERVAR}/ foobar 
  • 在线开始时必须使用foobar
  • foobar可以是任何string,只需在<<foobar使用相同的string即可

然后做seding

 sed -f sedfile testfile 

我希望你的sedfile有点复杂,对于一两个replace它可能不值得使用它。