Búsqueda de sitios web

Comprensión y escritura de 'variables de Linux' en scripts de Shell - Parte 10


El lenguaje de scripting de shell de Linux siempre ha sido un tema candente y siempre lo será en el futuro. El lenguaje de secuencias de comandos Shell es mágico y es tan fácil hacer un programa en lenguaje de secuencias de comandos como en cualquier otro lenguaje. Sin embargo, se necesita un conocimiento profundo de lo que estamos haciendo y cuál es el resultado esperado.

Todos los artículos sobre scripts de shell que hemos escrito para nuestros lectores son muy apreciados, incluido el último, "Una visión de las variables de Linux". Estamos ampliando el último artículo a un nuevo nivel.

Atributos variables

Cada variable en el entorno Linux tiene ciertas opciones y se denominan "atributos". Estas opciones o atributos se pueden activar y desactivar, cuando sea necesario según la situación, mediante el comando “declarar”.

Un ejemplo de atributo de variable es usar un interruptor que diga '-i' que activará el atributo de número entero para la variable correspondiente. Incluso si se pasa un valor no numérico para cambiar '-i', no arrojará un mensaje de error y generará '0' como interpretación de entero. Aquí queda más claro con el siguiente ejemplo.

Declarar una variable Entero, bill=121

avi@localhost:~$ declare -i bill=121

Imprima el valor de la factura variable.

avi@localhost:~$ printf "%d\n" "$bill" 

121

Sea el valor de la variable una cadena. El billete variable ya está declarado, no es necesario declararlo por segunda vez. Simplemente cambie el valor de la variable como.

avi@localhost:~$ bill=tecmint

Ahora, imprima nuevamente el valor de la factura variable.

avi@localhost:~$ printf "%d\n" "$bill" 

0

Observe '0' en lugar del mensaje de error.

Ahora la pregunta es ¿cómo saber los atributos de variables ya declaradas?
avi@localhost:~$ declare -p bill 

declare -i bill="121"

Aquí, un interruptor -p (significa imprimir) viene al rescate.

Nuevamente, ¿qué debo hacer para desactivar los atributos de una variable?

Para desactivar Desactivar los atributos de una variable lo que necesitamos es poner un signo + (más) justo antes del cambio. Aquí queda más claro en el siguiente ejemplo.

Desactive Desactiva el atributo de número entero para la variable anterior.

avi@localhost:~$ declare +i bill

Verifique el valor de la variable.

avi@localhost:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

Ahora imprima el valor de la variable usando la cadena de cambio.

avi@localhost:~$ printf "%s\n" "$bill" 

tecmint

Aquí, en el ejemplo anterior, bash no pudo juzgar un valor no numérico como error; sin embargo, printf está interpretando qué podría ser un número y qué no.

Variables de solo lectura

Es posible que hayas oído hablar de Memoria de sólo lectura (ROM), pero ¿qué es una variable de sólo lectura? ¿Tiene alguna similitud con la ROM?

Bueno, las variables de solo lectura, como la memoria de solo lectura, son algo cuyo valor no se puede cambiar una vez asignado. Por eso se llama de sólo lectura. No puede escribir, editar o modificar un nuevo valor para esa variable. A continuación se muestra una ilustración con un ejemplo.

Calcule un nombre de variable de solo lectura (-r), cuyo valor sea “linux-console.net”.

avi@localhost:~$ declare -r name="linux-console.net"

Imprima el valor de la variable declarada anteriormente.

avi@localhost:~$ printf "%s\n" "$name" 

linux-console.net

Intente cambiar el valor de la variable.

avi@localhost:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Como se analizó anteriormente, los atributos de una variable de solo lectura se pueden cambiar usando el signo '+'.

Exportación de variables en Linux

Todas las variables de shell declaradas en un script de shell están disponibles hasta que se ejecuta el script. Fuera del script, la variable del script no existe. El proceso de hacer que las variables estén disponibles fuera del script se denomina exportación de variables.

Se puede exportar una variable fuera del shell usando el modificador declare -x (exportar), que reconoce al shell lo que desea exportar. Se puede utilizar un interruptor de declaración de exportación como.

avi@localhost:~$ declare -x variable=”Constant_Value”

Todos los cambios realizados en la variable mientras se ejecuta el script se pierden cuando la variable se exporta fuera del script. Exportar variables es muy importante en los scripts de shell.

Queremos tener una variable que sea de solo lectura y esté disponible fuera del script, necesitamos usar el interruptor -r y el interruptor -x al mismo tiempo.

avi@localhost:~$ declare -rx variable=”Constant_Value”

Variables de entorno

Las variables que se comparten entre el programa y el programa que las ejecuta. Las variables de entorno se pueden exportar pero no se les pueden asignar atributos.

Comprender la teoría anterior de manera práctica. Aquí tenemos dos scripts 0.sh y 1.sh.

0.sh
#!/bin/bash 
declare -rx name=Tecmint 
bash 0.sh 
exit 0

Y el segundo guión es.

1.sh
#!/bin/bash 
printf "%s\n" "$name" 
name=linux-console.net 
printf "%s\n" "$name"
exit 0

Aquí lo que sucede es que una variable (nombre) se declara como de solo lectura y se exporta e inmediatamente después se llama a ese segundo script.

El segundo script simplemente imprimió la variable del primer script que se exportó en la primera instrucción printf. En la segunda declaración printf muestra el nuevo valor asignado a la variable 'nombre'.

No hay que preocuparse, si la variable era de solo lectura, ¿cómo se puede reasignar? ¿No recuerdas que “Todos los cambios realizados en la variable mientras se ejecuta el script se pierden cuando la variable se exporta fuera del script? "

Referencias

El comando declarar permite todos los cambios siguientes junto con su combinación.

  1. -a: Declara una matriz.
  2. -f: Función de visualización y definición.
  3. -F: Mostrar nombre de función.
  4. -r: declara la variable como de solo lectura.
  5. -x: declarar variable como exportable.
  6. -I: Declarar variable como entero.

Eso es todo por ahora. En el próximo artículo discutiremos formas de sustituir variables usando el comando 'eval' y las variables ya definidas en bash antes de cerrar este tema. Espero que estén disfrutando de su viaje hacia la profundidad de las secuencias de comandos. Hasta entonces, estad atentos y conectados a linux-console.net.