我正在尝试使用网址更新多个配置文件
配置文件是一个通用文件,它们都包含一行,例如
"github" => "github_change",
我的sed命令是
sudo sed -i 's/github_change/"$github"/g' config.php
但这只会产生
"github" => ""$github"",
正确的输出应该是
"github" => "https://github.com",
我已经尝试了一段时间不同的报价组合到最后
答案 0 :(得分:0)
单引号可防止变量扩展。你可能正在寻找更像
的东西sed -i "s/github_change/$github/g" config.php
由于你的地址有正斜杠,你需要逃避:
sed -i "s/github_change/${github//\//\\/}/g" config.php
关于奇怪的构造:通常${varname//a/b}
扩展为varname
的内容,但用a
替换所有出现的b
。在这种情况下,a
确实是/
,但必须将其转义为文字正斜杠,而不是a
和b
之间的分隔符,因此{{ 1}}。最后一部分是\/
,它是一个字面反斜杠(转义),后跟正斜杠。