如何使用sed的bash脚本变量

时间:2010-07-08 13:58:08

标签: bash scripting sed

我执行以下bash脚本:

#!/bin/bash
version=$1
echo $version
sed 's/\${version.number}/$version/' template.txt > readme.txt

我希望将$ {version.number}的所有实例替换为变量“version”的内容。而是插入文字文本$ version。

我需要做些什么才能让sed使用$ version的当前值?

3 个答案:

答案 0 :(得分:17)

sed "s/\${version.number}/$version/" template.txt > readme.txt

只有双引号才能进行美元符号替换。这也意味着单引号不需要转义美元符号。

答案 1 :(得分:4)

您也可以简单地取消引用变量

sed 's/'${version.number}'/'$version'/' template.txt > readme.txt

答案 2 :(得分:0)

它有点旧,但它可能仍然有用...... 对我而言,正如菲利普所说的那样,它使用了双重逃脱(如果你使用它们,那就逃避括号......):

#!/bin/bash
LIVE_DB_NAME='wordpress';
STAGING='staging';
sed -r "s/define\('DB_NAME', '[a-zA-Z0-9]+'\);/define('DB_NAME', '\\${LIVE_DB_NAME}');/" ${STAGING}/wp-config.php >tmp1;