次のbashスクリプトを実行します。
#!/bin/bash
version=$1
echo $version
sed 's/\${version.number}/$version/' template.txt > readme.txt
$ {version.number}のすべてのインスタンスを変数 "version"の内容に置き換えることを期待しています。代わりに、リテラルテキスト$ 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;