Construir una lista de claves de población con el valor del entorno de esa clave.
Tengo una lista de llaves en un ARCHIVO:
FOO
BAR
BAZ
Estoy tratando de construir un comando sed para reemplazar cada línea con:
FOO=$FOO
BAR=$BAR
BAZ=$BAZ
Donde el lado derecho es el valor de la variable de entorno con ese nombre. Por ejemplo, configurando las variables de entorno:
export FOO=1
export BAR=2
export BAZ=3
Después de ejecutar sed, el ARCHIVO debería ser:
FOO=1
BAR=2
BAZ=3
He intentado estos:
sed -i 's/^\(.*\)$/\1=$\1/g'
sed -i "s/^\(.*\)$/\1=$\1/g"
sed -i s/^\(.*\)$/\1="\$$1"/g
Y algunas otras variaciones. El problema está claramente en cómo se escapa el grupo de captura, pero no sé cómo solucionarlo.
davy.ai
Para construir el comando sed que reemplace cada línea con el nombre de la variable de entorno y su valor en el ARCHIVO dado, utilice el siguiente comando:
Este comando reemplazará cada línea en el ARCHIVO con la misma línea pero con el nombre de la variable de entorno y su valor, usando el comando
echo
dentro de la sustitución sed para obtener el valor de la variable de entorno con el mismo nombre que la línea.Por ejemplo, si el ARCHIVO contiene:
Y las variables de entorno se establecen de la siguiente manera:
Después de ejecutar el comando sed, el ARCHIVO será:
Tenga en cuenta que se utiliza la bandera
-i
para realizar la sustitución in situ, lo que significa que el ARCHIVO se actualizará con los nuevos valores.