Cómo reemplazar variables de entorno usando el comando envsubst

Mientras trabajan con scripts, la mayoría de los usuarios van a usar variables de entorno, pero a veces usan variables que tienen un costo arriesgado.

Entonces, si desea reemplazar las variables de entorno, puede usar el comando envsubst.

Reemplace las variables de entorno usando el comando envsubst en Linux

El comando envsubst se usa para obtener un sustituto de las variables de entorno y eso es lo que sugiere su nombre.

Pero no cambiará su directorio de variables. Primero, buscará patrones variables (como$VARIABLEo[$VARIABLE]).

Y luego reemplazará las variables encontradas con un especificado bash variable.

?El comando envsubst solo reconocerá las variables exportadas.

Para reemplazar sus variables de entorno usando envsubst, deberá seguir la estructura de comando dada:

envsubst [OPTION] [SHELL-FORMAT]

Ahora, echemos un vistazo a cómo puede cambiar la variable de entorno.

Para ese propósito, usaré un archivo llamadoconfidential.txtque contiene:

A sample file containg password and username!

And should not be shared by any means.

My loging credentials are:

        username=$USERNAME
        password=$PASSWORD

Ahora, para tener valores sustitutos para ambos$USERNAMEy$PASSWORDPrimero, crearé una variable exportada para ambos:

export USERNAME=abhiman
export PASSWORD=strongphrase

Una vez que haya terminado de exportar valores de variables, puede invocar el comando envsubst para el archivo que ha creado:

envsubst < confidential.txt

Y como puede ver, ¡los valores se han alterado con éxito!

De manera similar, puede desarmar esas variables usando el comando desarmar. Déjame enseñarte como.

Primero, anule la configuración de la variable que especificó con el comando de exportación.

En mi caso, esos fueron,USERNAMEyPASSWORD:

unset USERNAME PASSWORD

Ahora, si ejecuta elenvsubstcomando de nuevo, resultará en espacios en blanco:

desarmar variables en linux

Y si tienes curiosidad acerca de cómo sucedió, déjame recordarte algo que mencioné anteriormente.

El comando envsubst solo funcionará con variables exportadas y cuando usé el comando unset, los valores eran nulos.

Ycuando el comando envsubst no encuentra ningún valor para reemplazar, generará espacios en blanco.

Redirigir la salida al archivo específico

Tener un directorio de salida para la terminal no siempre es la mejor manera de hacer las cosas y, en ese caso, puede redirigir la salida estándar al archivo.

Para redirigir la salida al archivo, tendrá que usar el>símbolo de redirección.

Para exampleaquí, estaré redirigiendo la salida al archivo llamadoOutput.txt:

envsubst < confidential.txt > Output.txt
redirigir la salida de envsubst al archivo en Linux

Reemplace variables específicas usando el comando envsubst con SHELL-FORMAT

Así que supongamos que ha exportado múltiples variables de entorno pero solo desea sustituir algunas de ellas.

Y en ese caso, puedes usar SHELL-FORMAT.

La sintaxis es bastante flexible donde todo lo que necesita hacer es especificar la variable en''y puedes usarlo de varias maneras:

Se puede usar como:

envsubst '$variable' > file

O puede agregar múltiples variables como esta:

envsubst '$variable1 $variable1 $variable3' > file

E incluso puede agregar texto básico para una mejor comprensión:

envsubst 'subsitute the $variable1 and $variable2' > file

Muy flexible. ¿Bien?

Ahora, por esto exampleusaré un archivo llamadoSubstitute.txtque contiene lo siguiente:

Hello, My name is $USER.

And these are login credentials for $SERVICE:

        username=$USERNAME
        password=$PASSWORD

Not meant for public use!

A continuación, exportaré valores para cada variable utilizada en el archivo anterior:

export USER=sagar export SERVICE=AWS export USERNAME=LHB export PASSWORD=randomphrase  

Y sin reemplazar ninguna variable específica, debería darme el siguiente resultado:

use el comando envsubst para sustituir las variables de entorno

Así que digamos que solo quiero los valores de$USERy$SERVICEpara que se refleje en la salida, por lo que usaré lo siguiente:

envsubst '$USER $SERVICE' < Substitute.txt
sustituya variables específicas usando envsubst con SHELL-FORMAT en Linux

Y como puede ver, mostró los valores de$USERy$SERVICEmientras dejaba el$USERNAMEy$PASSWORDcomo están las cosas.

Una forma ordenada de manejar información privada. ¿no es así?

¿Te encanta jugar con las variables? tenemos mas

Si es un desarrollador y le encanta usar variables de entorno, así es como puede conocer el valor de cada una:

O si está interesado en conocer formas inusuales de usar variables en bashasí es como lo haces:

Espero que encuentre útil este artículo y si tiene alguna consulta relacionada con esta o cualquier otra guía, o simplemente quiere que cubra algún tema específico, hágamelo saber en los comentarios.

Artículos Relacionados