我执行以下 bash 脚本:
#!/bin/bash
version=$1
echo $version
sed 's/\${version.number}/$version/' template.txt > readme.txt
我期望用变量“version”的内容替换 ${version.number} 的所有实例。相反,正在插入文字文本 $version。
我需要做什么才能使 sed 使用 $version 的当前值?
sed "s/\${version.number}/$version/" template.txt > readme.txt
只有双引号可以替换美元符号。这也意味着单引号不需要转义美元符号。
您也可以简单地取消引用变量
sed 's/'${version.number}'/'$version'/' template.txt > readme.txt
它有点旧,但它可能仍然有帮助......对我来说,它使用菲利普所说的双重转义(并且转义括号,如果你使用它们......):
#!/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;