Sustitución de variables anidadas y variables BASH predefinidas en Linux - Parte 11


Los dos últimos artículos sobre BASH Shell, donde discutimos las variables en detalle, fueron muy apreciados entre nuestros lectores. Nosotros, como Tecmint-Team, estamos muy interesados u200bu200ben brindarle los temas más recientes, actualizados y relevantes cubiertos en detalle. Además, siempre tratamos de tocar las principales perspectivas de los temas correspondientes.

Aquí está el último artículo sobre Variables de Linux donde veremos la sustitución de variables y las variables definidas en Shell antes de cerrar este tema.

Bash realiza la sustitución de variables antes de que el comando se ejecute realmente. Linux Bash Shell busca todo el signo "$" antes de ejecutar el comando y lo reemplaza con el valor de la variable. El proceso de sustitución de Variables de Bash se realiza solo una vez. ¿Y si tenemos variables anidadas?

Nota: Por variable anidada queremos decir, variable declarada dentro de variable. Veamos el escenario anterior en el siguiente ejemplo.

Declare una variable que sea de solo lectura y ejecutable como se muestra a continuación.

[email protected]:~$ declare -rx Linux_best_website="www.tecmint.com"

Verifique el valor de la variable almacenada.

[email protected]:~$ printf "%s" "$Linux_best_website" 

www.tecmint.com

Ahora declare otra variable que nuevamente sea de solo lectura y ejecutable.

[email protected]:~$ declare -rx Linux_website="Linux_best_website"

Ahora la situación es que hemos definido dos variables.

y "Linux_website", cuyo valor es "Linux_best_website"

¿Cuál sería el resultado si ejecutamos el siguiente comando de una línea?

[email protected]:~$ printf "%s" "$Linux_website"

Primero debe reemplazar la variable ' ', con el valor " Linux_best_website " y luego " " es nuevamente una variable cuyo valor es "< b> www.tecmint.com ”. Entonces, el resultado final de ejecutar el siguiente comando debería ser.

[email protected]:~$ printf "%s" "$Linux_website" 

www.tecmint.com

Pero desafortunadamente, esta no es la situación, el resultado que estamos obteniendo es Linux_best_website .

¿Razón? ¡Sip! Bash sustituye el valor de la variable solo una vez. ¿Qué pasa con los scripts y programas complejos en los que necesitamos sustituir variables con frecuencia y también necesitamos sustituir la variable más de una vez?

Aquí viene el comando " eval " que realiza un trabajo adicional de sustitución de variables más de una vez en un script. Aquí hay un ejemplo para que todo el trabajo sea tan claro como el vidrio.

Declare una variable x , cuyo valor es 10 .

[email protected]:~/Desktop$ declare x=10

Verifique el valor de la variable x , que acabamos de definir.

[email protected]:~/Desktop$ echo $yx

x10

Declare una variable y , cuyo valor es x .

[email protected]:~/Desktop$ declare y=x

Verifique el valor de la variable y , que acabamos de definir.

[email protected]:~/Desktop$ echo $y 

x

Aquí está el problema de BASH sustitución de variables de una sola vez, que no realiza una ronda adicional de sustitución de variables. Estamos usando el comando " eval " para solucionar este problema.

[email protected]:~/Desktop$ eval y=$x

Ahora verifique el valor de la variable " y ".

[email protected]:~/Desktop$ echo $y 

10

¡Hurra! El problema se solucionó y el comando "eval" ganó la carrera :)

Sin mencionar que el comando " eval " es muy útil en programas de secuencias de comandos grandes y es una herramienta muy útil.

La última pero no menos importante parte de esta publicación son las variables predefinidas de BASH. ¡No! Que no cunda el pánico al ver esta lista. Nunca es necesario recordar toda la lista antes de comenzar a escribir guiones, excepto algunos. Como parte del proceso de aprendizaje, presentamos la Lista de variables predefinidas de BASH.

Hay una lista enorme de variables BASH predefinidas. Hemos intentado elaborar una lista de los más utilizados.

Eso es todo por ahora. Estaré aquí de nuevo con otro artículo interesante. Hasta entonces, estad atentos y conectados a TecMint. No olvide enviarnos sus valiosos comentarios en la sección de comentarios a continuación.