我执行以下bash脚本:
#!/bin/bash
version=$1
echo $version
sed 's/\${version.number}/$version/' template.txt > readme.txt
我希望将$ {version.number}的所有实例替换为变量“version”的内容。而是插入文字文本$ version。
我需要做些什么才能让sed使用$ version的当前值?
答案 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;