Comprensió i escriptura de variables de Linux en els scripts de Shell - Part 10


El llenguatge de programació de shell Linux sempre ha estat un tema candent i sempre ho serà en el futur. El Shell Scripting Language és màgic i és tan fàcil fer un programa en llenguatge de script com en qualsevol altre llenguatge. No obstant això, cal un coneixement profund del que estem fent i del resultat que s'espera.

Tots els articles de shell scripting que hem escrit per als nostres lectors són molt apreciats, inclòs l'últim \An Insight of Linux Variables. Estem estenent l'últim article a un nou nivell.

Atributs variables

Cada variable de l'entorn Linux té certes opcions, i aquestes s'anomenen atributs. Aquestes opcions o atributs es poden Activar i Desactivar, quan sigui necessari segons la situació mitjançant l'ordre \declare.

Un exemple d'atribut de variable està utilitzant un interruptor que digui -i que activarà l'atribut sencer per a la variable corresponent. Fins i tot si es passa un valor no numèric per canviar -i, no llançarà un missatge d'error i sortirà 0 com a interpretació d'un nombre enter. Aquí queda més clar a partir de l'exemple següent.

Declarar una variable Enter, bill = 121

[email :~$ declare -i bill=121

Imprimeix el valor de la factura variable.

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

121

Sigui el valor de la variable una cadena. La factura variable ja està declarada, no cal declarar-la per segona vegada. Només cal canviar el valor de la variable com.

[email :~$ bill=tecmint

Ara, torneu a imprimir el valor de la factura variable.

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

0

Observeu 0 al lloc del missatge d'error.

[email :~$ declare -p bill 

declare -i bill="121"

Aquí, un interruptor -p (significa impressió) arriba a rescatar-se.

Per desactivar Desactivar els atributs d'una variable el que necessitem és posar un signe + (plus) just abans de l'interruptor. Aquí queda més clar a partir de l'exemple següent.

Desactiveu Desactiva l'atribut enter de la variable anterior.

[email :~$ declare +i bill

Comproveu el valor de la variable.

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

bash: printf: bill: invalid number
0

Ara imprimiu el valor de la variable utilitzant la cadena de commutació.

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

tecmint

Aquí, a l'exemple anterior, bash no ha pogut jutjar el valor no numèric com a error, però printf està interpretant, què podria ser un nombre i què no.

Variables de només lectura

És possible que hagis sentit la memòria de només lectura (ROM), però què és la variable de només lectura? Té alguna similitud amb la ROM?

Bé, les variables de només lectura com la memòria de només lectura són una cosa el valor de la qual no es pot canviar un cop s'ha assignat. Per tant, s'anomena només lectura. No podeu escriure, editar o modificar un valor nou per a aquesta variable. Aquí teniu una il·lustració amb un exemple.

Marca un nom de variable només de lectura (-r), el valor del qual és \linux-console.net.

[email :~$ declare -r name="linux-console.net"

Imprimeix el valor de la variable declarada anteriorment.

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

linux-console.net

Intenta canviar el valor de la variable.

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

bash: declare: name: readonly variable

Com s'ha comentat anteriorment, els atributs d'una variable de només lectura es poden canviar mitjançant el signe +.

Exportació de variables a Linux

Totes les variables de l'intèrpret d'ordres declarades en un script d'intèrpret d'ordres estan disponibles fins que s'executa l'script. Fora de l'script, la variable de l'script no existeix. El procés de fer que les variables estiguin disponibles fora de l'script s'anomena exportació de variables.

Una variable es pot exportar fora de l'intèrpret d'ordres utilitzant el commutador declare -x (exportació), que reconeix a l'intèrpret d'ordres el que voleu exportar. Es pot utilitzar un commutador d'exportació de declaració com a.

[email :~$ declare -x variable=”Constant_Value”

Tots els canvis fets a la variable mentre s'executa l'script es perden quan la variable s'exporta fora de l'script. L'exportació de la variable és molt important en els scripts d'intèrpret d'ordres.

Volem tenir una variable que hauria de ser només de lectura i disponible fora de l'script, hem d'utilitzar el commutador -r i el commutador -x alhora.

[email :~$ declare -rx variable=”Constant_Value”

Variables del mediambient

Les variables que es comparteixen entre el programa i el programa que les executa. Les variables d'entorn es poden exportar però els atributs no se li poden assignar.

Comprensió pràctica de la teoria anterior. Aquí tenim dos scripts 0.sh i 1.sh.

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

I el segon guió és.

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

Aquí el que està passant és que una variable (nom) es declara com a només de lectura i s'exporta i immediatament després es crida aquest segon script.

El segon script acaba d'imprimir la variable del primer script que es va exportar a la primera instrucció printf. A la segona instrucció printf mostra el nou valor assignat a la variable 'nom'.

No us heu de preocupar, que la variable era només de lectura, com es pot reassignar. No recordeu que \Tots els canvis fets a la variable mentre s'executa l'script, es perden quan la variable s'exporta fora de l'script.

L'ordre declare permet tots els commutadors següents juntament amb la seva combinació.

  1. -a : declara una matriu.
  2. -f : funció de visualització i definició.
  3. -F: Mostra el nom de la funció.
  4. -r : declara la variable com a només de lectura.
  5. -x : declara la variable com a exportable.
  6. -I : declara la variable com a enter.

Això és tot per ara. En el proper article parlarem de maneres de substituir variables mitjançant l'ordre 'eval' i les variables ja definides a bash abans de tancar aquest tema. Espero que gaudiu del vostre viatge cap a l'escriptura en profunditat. Fins aleshores estigueu atents i connectats a linux-console.net.