Búsqueda de sitios web

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


Ya hemos escrito una serie de artículos sobre Linux Shell Scripting que fueron muy bien recibidos en ese momento y siguen siendo muy relevantes incluso ahora. Aquí está el enlace a la colección de artículos sobre scripts de shell.

  1. Aprenda las secuencias de comandos de Shell de Linux

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

Guardar una salida

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

Variables en lenguaje de secuencias de comandos

Las variables son un componente importante utilizado en las secuencias de comandos de Shell y se declaran mediante el comando bash “Declarar”. 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. La 'declaración' es más avanzada y contiene todas las funciones, por lo que se recomienda cuando se utiliza BASH.

Normas
  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. Los nombres de las variables pueden estar tanto en mayúsculas como en minúsculas, pero por convención los comandos del shell están en minúsculas y, por lo tanto, debemos usar los nombres de las variables en mayúsculas, para eliminar cualquier confusión. por ejemplo, TOTAL_FACTURADO_AMOUNT, SELL_REPORT, ORDER_RECEIPT, etc.

Implementación

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

LEVEL =

Verifique el valor almacenado en la variable 'NIVEL' como.

printf "%i" $LEVEL

printf, el comando que la mayoría de los programadores de 'C' conocen, imprime datos. %i: representa un número entero. Podemos reemplazarlo con %c para Carácter o %c para cadena, cuando sea necesario.

$LEVEL: Tenga en cuenta el '$' que funciona como sustituto del valor de la variable 'LEVEL'.

Salida de muestra
printf "%i" $LEVEL
0

Asigne un valor a la variable.

LEVEL=0

Verifique los datos almacenados en la 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 'LEVEL' genera 0. Aunque el resultado es el mismo en ambos casos, el script de shell maneja ambas declaraciones de variables de manera diferente.

Asigne un nuevo valor a la variable.

LEVEL=121

Verifique los datos almacenados en la variable.

printf "%i" $LEVEL
121

Desarmar una variable

Declarar 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

Variables predefinidas en BASH

BASH tiene más de 50 variables predefinidas. Algunas de estas variables tienen un significado especial asociado a BASH, por ejemplo, una variable RANDOM genera un número aleatorio. Si se desarma 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: la ruta completa 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, versión 2.04.0(1)).
  4. COLUMNAS: el número de caracteres por línea en la 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 completo.
  6. HOSTTYPE: tipo de computadora.
  7. INICIO: el nombre de su directorio de inicio.
  8. OSTYPE: el nombre del sistema operativo.
  9. RUTA: lista separada por dos puntos de rutas de búsqueda para encontrar un comando para ejecutar.
  10. PPID: el ID del proceso principal del shell.
  11. PROMPT_COMMAND: comando que se ejecutará antes de la configuración de la cadena de aviso principal de PS1.
  12. PWD: el directorio de trabajo actual (según lo establecido por el comando cd).
  13. ALEATORIO: 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 producción 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 el resultado no es correcto. 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 utilizar comillas 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

¡Sí! Poner la sustitución de variables entre comillas es la solución. Las comillas agrupan caracteres en shell e interpretan los caracteres especiales de manera significativa.

Las comillas se pueden utilizar consecutivamente 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 citado con espacios dará como resultado el mismo problema que se analizó anteriormente. El bash tratará los espacios en blanco como una 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 (/)

La barra invertida funciona como una comilla simple para un carácter. ¿Has pensado cómo imprimirás ()?

printf "%c" "\""

Cuando %q se agrupa con printf, proporciona una barra invertida después de cada palabra para garantizar el espacio 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 resulten útiles de vez en cuando. El artículo cubierto anteriormente es extenso, por lo que el resto de los temas con ejemplos se producirán en el próximo artículo, que incluirá "Atributos de variable", "Exportación de variables", etc.

Hasta entonces Estén atentos y conectados a linux-console.net. No olvide brindarnos sus valiosos comentarios en la sección de comentarios a continuación.