Cómo usar una variable de script bash con sed

Ejecuto el siguiente script bash:

#!/bin/bash version=$1 echo $version sed 's/\${version.number}/$version/' template.txt > readme.txt 

Estoy esperando reemplazar todas las instancias de $ {version.number} con los contenidos de la variable “versión”. En su lugar, se está insertando la versión $ del texto literal.

¿Qué debo hacer para que sed use el valor actual de $ version?

 sed "s/\${version.number}/$version/" template.txt > readme.txt 

Solo las comillas dobles reemplazan el signo de dólar. Eso también significa que las comillas simples no requieren que se escape el signo de dólar.

También puede simplemente anular la comilla de las variables

 sed 's/'${version.number}'/'$version'/' template.txt > readme.txt 

Es un poco viejo, pero podría ser útil … Para mí funcionó usando un escape doble como dijo Philip (y escapando paréntesis, si los usa …):

 #!/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;