古いバージョンの 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 をエスケープする方法がわかりません。