Una visión de las "variables" de Linux en el lenguaje de secuencias de comandos de Shell - Parte 9


Ya hemos escrito una serie de artículos sobre Linux Shell Scripting que fue muy bien recibido en ese momento y fue muy relevante incluso ahora. Aquí está el enlace a la colección de artículos sobre secuencias de comandos de shell.

  1. Aprenda las secuencias de comandos del shell de Linux

Aquí en este artículo veremos las variables, su ejecución y su implementación en script de shell.

La salida de un comando se puede redirigir a una salida estándar o un archivo y también se puede almacenar en una variable. Si la salida de un comando es lo suficientemente grande como para que no se ajuste a la pantalla, solo nos queda la opción de guardar la salida en un archivo en una variable. Una ventaja de guardar los resultados en variables es una mayor velocidad de examen. Las variables se guardan en la memoria y, por lo tanto, tiende a ser más rápido en comparación con la recuperación del archivo.

Las variables son un componente importante que se utiliza en las secuencias de comandos de Shell y se declaran mediante el comando de bash "Declare". Para declarar una variable digamos "nivel", debemos ejecutar el siguiente comando.

$ declare LEVEL

Nota: Necesitamos usar "typecast", una declaración incorporada para la compatibilidad del shell korn. El "declare" es más avanzado y contiene todas las funciones, por lo que se recomienda cuando se usa BASH.

  1. El nombre de una variable debe justificar el uso de la variable en el script.
  2. Se recomienda encarecidamente utilizar el mismo nombre de variable en todo el programa.
  3. El nombre de las variables puede estar tanto en mayúsculas como en minúsculas, pero por convención, los comandos de shell están en minúsculas y, por lo tanto, debemos usar el nombre de las variables en mayúsculas para eliminar cualquier confusión. p. ej., TOTAL_BILLED_AMOUNT, SELL_REPORT, ORDER_RECEIPT, etc.

A una variable se le puede asignar un valor usando un signo igual (u003d). Para asignar una cadena vacía a una variable no debemos proporcionar ningún valor después del signo igual.

$ LEVEL =

Compruebe el valor almacenado en la variable "NIVEL" como.

$ printf "%i" $LEVEL

printf, el comando que la mayoría de los programadores "C" conocen, imprime datos. % i: representa un número entero. Podemos reemplazarlo con% c para Character o% c para string, como y cuando sea necesario.

$LEVEL: tenga en cuenta el "$" que funciona como un sustituto de valor para la variable "LEVEL".

$ printf "%i" $LEVEL
0

Asignar un valor a la variable.

$ LEVEL=0

Verifique los datos almacenados en variable.

$ printf "%i" $LEVEL
0

NOTA: Es interesante notar que en ambos casos, cuando no asignamos el valor a la variable y cuando asignamos el valor '0' a la variable 'NIVEL', las salidas son 0. Aunque la salida es la misma en ambos casos pero el script de shell maneja ambas declaraciones de variables de manera diferente.

Asignar un nuevo valor a la variable.

$ LEVEL=121

Verifique los datos almacenados en variable.

$ printf "%i" $LEVEL
121

Declare es un comando BASH y crea variables solo cuando se ejecuta. La variable así creada permanece en la memoria hasta que el script se detiene o se destruye la variable.

$ unset LEVEL

BASH tiene más de 50 variables predefinidas. Algunas de estas variables tienen un significado especial adjunto a BASH, por ejemplo, una variable RANDOM genera un número aleatorio. Si no se configura y luego se define nuevamente, el valor de la variable original se pierde para siempre. Por lo tanto, se recomienda no utilizar ninguna variable definida por el sistema.

Aquí hay una lista de algunas variables BASH útiles.

  1. BASH: el nombre de ruta completo de Bash.
  2. BASH_ENV: en un script de shell, el nombre del archivo de perfil ejecutado antes de que se iniciara el script.
  3. BASH_VERSION: la versión de Bash (por ejemplo, 2.04.0 (1) -release).
  4. COLUMNAS: la cantidad de caracteres por línea en su pantalla (por ejemplo, 80).
  5. HOSTNAME: el nombre de la computadora. En algunas versiones de Linux, este puede ser el nombre de la máquina. En otros, puede ser un nombre de dominio completamente calificado.
  6. HOSTTYPE: tipo de computadora.
  7. INICIO: el nombre de su directorio de inicio.
  8. OSTYPE: el nombre del sistema operativo.
  9. RUTA: lista de rutas de búsqueda separadas por dos puntos para encontrar un comando para ejecutar.
  10. PPID: el ID de proceso del proceso principal del shell.
  11. PROMPT_COMMAND: comando que se ejecutará antes de la configuración de la cadena de solicitud principal de PS1.
  12. PWD: el directorio de trabajo actual (según lo establecido por el comando cd).
  13. RANDOM: devuelve un número aleatorio entre 0 y 32767 cada vez que se hace referencia a él.
  14. SHELL: el shell preferido para usar; para programas que inician un shell por usted.
  15. TERM: el tipo de emulación de terminal (por ejemplo, consola).

La regla de la división de palabras.

$ LEVEL=0
$ printf "%i" $LEVEL
0

AND

$ LEVEL=”0”
$ printf "%i" $LEVEL
0

En ambos casos, la salida sigue siendo la misma. Entonces, ¿cuál es la diferencia en el resultado al utilizar la cotización?

Comprobemos lo mismo con diferentes datos variables.

$ LEVEL=0 ; 1 ; 2 ; 3 ; 4 ; 5
bash: 1: command not found 
bash: 2: command not found 
bash: 3: command not found 
bash: 4: command not found 
bash: 5: command not found
$ printf "%i" $LEVEL
0

Sin mencionar que la salida no es correcta. BASH toma el espacio después de "0" como terminación y, por lo tanto, el valor de la variable se establece como "0". Ahora intentamos usar citas para las variables como se muestra a continuación.

$ LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
$ printf "%s" $LEVEL 
0;1;2;3;4;5

Aún así, el resultado no es correcto. BASH tomó los valores de las variables y eliminó todos los espacios entre ellos. Por lo tanto, printf no interpretó 0, 1, 2, 3, 4, 5 como valores distintos. Entonces, ¿cuál es la solución?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

¡Si! Poner la sustitución de Variables entre comillas es la solución. Las citas agrupan a los caracteres en el caparazón e interpretan los caracteres especiales de manera significativa.

Las citas se pueden utilizar una tras otra y es una buena idea incluir las sustituciones de variables entre comillas. Además, se puede utilizar para separar el texto general de las citas. Aquí hay un ejemplo.

$ LEVEL=5 
$ FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
$ printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Separar fragmentos de texto entre comillas con espacio resultará en el mismo problema que se discutió anteriormente. El bash tratará los espacios en blanco como terminación. Otra forma de sustitución de variables es.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Las comillas simples impiden que BASH imprima caracteres especiales.

$ printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

La barra invertida funciona como comillas simples para un carácter. ¿Ha pensado cómo va a imprimir (“)?

$ printf "%c" "\""

Cuando% q se agrupa con printf, proporciona una barra invertida después de cada palabra para garantizar el espaciado entre palabras.

$ LEVEL=5

$ FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

$ printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

Eso es todo por ahora. Siempre tratamos de proporcionar a nuestros lectores artículos que les sean útiles de vez en cuando. El artículo cubierto anteriormente es amplio, por lo tanto, el resto de los temas con ejemplos se producirán en el próximo artículo que incluirá "Atributos de la variable", "Exportación de variables", etc.

Hasta entonces Esté atento y conectado a Tecmint.com. No olvide enviarnos sus valiosos comentarios en la sección de comentarios a continuación.