1 votos

reconocer bash variable dentro de un archivo de texto

Tengo un archivo de plantilla que va a ser utilizado por un script de shell para generar otros archivos y acaba de cambiar un relleno de la información dentro de este archivo de plantilla mediante variables.

el contenido del archivo template.example.log:

server name: $HOSTNAME
current user: $USER

Puedo probar diferentes maneras de hacer que esto funcione.

el contenido del archivo log.sh:

1) no funcionan, el archivo de salida some_log_1.log es el mismo que template.example.log y las variables que no se han modificado.

FILE_TEMPLATE="`cat template.example.log`"
cat > some_log_1.log <<EOF
$FILE_TEMPLATE
EOF

2) no trabajo con el comando echo demasiado, sucederá lo mismo que el anterior.

echo $FILE_TEMPLATE > some_log_1.log

pero si hago esto, funciona!

cat > some_log_1.log <<EOF
    server name: $HOSTNAME
    current user: $USER
EOF

la salida es a la derecha!

server name: ubuntu-server
current user: leafar

pero yo no quiero que el script se ejecute en este camino. Quiero leer el contenido de un archivo de texto y el gato en otro archivo de texto y fill the variables.

¿CÓMO PUEDO HACER ESO? GRACIAS. Ps: lo siento por mi débil inglés

1voto

Brian Puntos1562

Una opción es utilizar sed a editar los archivos. Esto le permite limitar qué variables se llenan.

Esto llenará template.txt y salida a filled.txt:

sed -e "s/\$HOSTNAME/$HOSTNAME/" -e "s/\$USER/$USER/" template.txt > filled.txt

template.txt:

server name: $HOSTNAME
current user: $USER

filled.txt:

server name: ubuntu-server
current user: leafar

EnMiMaquinaFunciona.com

EnMiMaquinaFunciona es una comunidad de administradores de sistemas en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros sysadmin, hacer tus propias preguntas o resolver las de los demás.

Powered by: