Comprensión y escritura de 'variables de Linux' en secuencias de comandos de shell - Parte 10


El lenguaje de programación de shell de Linux siempre ha sido un tema candente y siempre lo será en el futuro. El lenguaje de secuencias de comandos de Shell es mágico y es muy 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 secuencias de comandos 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, que 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 mostrará " 0 " como interpretación de entero. Aquí se vuelve más claro con el siguiente ejemplo.

Declarar una variable Integer, bill u003d 121

[email protected]:~$ declare -i bill=121

Imprime el valor de la factura variable.

[email protected]:~$ printf "%d\n" "$bill" 

121

Deje que el valor de la variable sea una cadena. La factura variable ya está declarada, no es necesario declararla por segunda vez. Simplemente cambie el valor de la variable como.

[email protected]:~$ bill=tecmint

Ahora, imprima nuevamente el valor de la cuenta variable.

[email protected]:~$ printf "%d\n" "$bill" 

0

Observe " 0 " en el lugar del mensaje de error.

[email protected]:~$ declare -p bill 

declare -i bill="121"

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

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

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

[email protected]:~$ declare +i bill

Verifique el valor de la variable.

[email protected]:~$ printf "%d\n" "$bill" 

bash: printf: bill: invalid number
0

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

[email protected]:~$ printf "%s\n" "$bill" 

tecmint

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

Variables de solo lectura

Es posible que haya escuchado Memoria de solo lectura ( ROM ), pero ¿qué es la variable de solo lectura? ¿Tiene alguna similitud con la ROM?

Bueno, las variables de solo lectura, como la memoria de solo lectura, es algo cuyo valor no se puede cambiar una vez que se asigna. Por lo tanto, se llama solo lectura. No puede escribir, editar o modificar un nuevo valor para esa variable. Aquí hay una ilustración con un ejemplo.

Califique un nombre de variable de solo lectura ( -r ), cuyo valor es “Tecmint.com”.

[email protected]:~$ declare -r name="Tecmint.com"

Imprime el valor de la variable declarada anteriormente.

[email protected]:~$ printf "%s\n" "$name" 

Tecmint.com

Intente cambiar el valor de la variable.

[email protected]:~$ declare -r name="Avishek" 

bash: declare: name: readonly variable

Como se mencionó anteriormente, los atributos de una variable de solo lectura se pueden cambiar mediante 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 llama exportar variables.

Una variable se puede exportar fuera del shell usando el interruptor declare -x (exportar), que reconoce al shell lo que quería exportar. Un conmutador de declaración de exportación se puede utilizar como.

[email protected]:~$ 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 variable es muy importante en la creación de 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.

[email protected]:~$ 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 los atributos no se les pueden asignar.

Comprensión práctica de la teoría anterior. 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=Tecmint.com 
printf "%s\n" "$name"
exit 0

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

El segundo script acaba de imprimir 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 se preocupe, que la variable era de solo lectura, ¿cómo se puede reasignar? ¿No recuerda que "Todos los cambios realizados en la variable mientras se ejecuta el script se pierden cuando la variable se exporta fuera del script"?

El comando declare permite todos los cambios a continuación junto con su combinación.

  1. -a : Declares an array.
  2. -f : Display Function and Definition.
  3. -F : Display Function Name.
  4. -r : Declare variable as read-only.
  5. -x : Declare Variable as Exportable.
  6. -I : Declare variable as Integer.

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 a la profundidad de las secuencias de comandos. Hasta entonces, estad atentos y conectados a Tecmint.com.