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$VARIABLE
o[$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.txt
que 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$USERNAME
y$PASSWORD
Primero, 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,USERNAME
yPASSWORD
:
unset USERNAME PASSWORD
Ahora, si ejecuta elenvsubst
comando de nuevo, resultará en espacios en blanco:

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

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.txt
que 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:

Así que digamos que solo quiero los valores de$USER
y$SERVICE
para que se refleje en la salida, por lo que usaré lo siguiente:
envsubst '$USER $SERVICE' < Substitute.txt

Y como puede ver, mostró los valores de$USER
y$SERVICE
mientras dejaba el$USERNAME
y$PASSWORD
como 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.