我正在运行旧版本的 git,并且正在编写一个更新主机名配置的脚本。
我的问题是我无法找出正确的转义字符组合,因此变量不会与我的正则表达式中使用的反向引用混合。
这是我最大的努力
#!/bin/bash
#code
foo=`ec2-describe-instances i-f95e4b82 | grep amazon | awk '{print $4}'`
sed -i "s/\(ec2-user@\)\(.*\)\(:repo\.git\)/\\1 $foo \\3/" /var/www/.git/config
这在第一个反向引用和变量 foo 之间放置了一个空格。希望在第一个反向引用和 $foo 之间没有那个空间。我怀疑我可以使用文字而不是反向引用,但用户名和存储库可能会改变。
有任何想法吗?
编辑
"s/\(ec2-user@\)\(.*\)\(:repo\.git\)/\\1$foo\\3/"
不会产生正确的答案,因为 foo 与 1 合并,产生错误的反向引用。我不知道如何逃脱 $foo。