Ricerca nel sito web

Comprensione e scrittura delle "variabili Linux" nello scripting di shell - Parte 10


Il linguaggio di scripting della shell Linux è sempre stato un argomento caldo e lo sarà sempre in futuro. Il linguaggio di scripting della Shell è magico ed è semplicissimo realizzare un programma in un linguaggio di scripting come in qualsiasi altro linguaggio. Tuttavia, è necessaria una conoscenza approfondita di ciò che stiamo facendo e del risultato atteso.

Tutti gli articoli sullo scripting di shell che abbiamo scritto per i nostri lettori sono molto apprezzati, incluso l'ultimo "An Insight of Linux Variables". Stiamo estendendo l'ultimo articolo a un nuovo livello.

Attributi variabili

Ogni variabile nell'ambiente Linux ha determinate opzioni e queste sono chiamate "attributi". Queste opzioni o attributi possono essere attivati On e Off, quando richiesto in base alla situazione, utilizzando il comando “declare ”.

Un esempio di attributo variabile utilizza un interruttore, ad esempio "-i", che attiverà l'attributo intero per la variabile corrispondente. Anche se viene passato un valore non numerico all'interruttore '-i', non verrà generato un messaggio di errore e verrà visualizzato '0' come interpretazione intera. Qui diventa più chiaro dall'esempio seguente.

Dichiara una variabile intera, fattura=121

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

Stampa il valore della fattura variabile.

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

121

Lascia che il valore della variabile sia una stringa. La variabile bill è già dichiarata, non è necessario dichiararla una seconda volta. Basta cambiare il valore della variabile as.

avi@localhost:~$ bill=tecmint

Ora, stampa nuovamente il valore della variabile bill.

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

0

Nota "0" al posto del messaggio di errore.

Ora la domanda è: come conoscere gli attributi delle variabili già dichiarate?
avi@localhost:~$ declare -p bill 

declare -i bill="121"

Qui viene in soccorso un interruttore -p (sta per print).

Ancora una volta, cosa dovrei fare per disattivare gli attributi di una variabile?

Per disattivare Off gli attributi di una variabile, tutto ciò di cui abbiamo bisogno è mettere un segno + (più) appena prima dell'interruttore. Qui è più chiaro dall'esempio seguente.

Disattiva Off l'attributo intero per la variabile precedente.

avi@localhost:~$ declare +i bill

Controllare il valore della variabile.

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

bash: printf: bill: invalid number
0

Ora stampa il valore della variabile utilizzando la stringa switch.

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

tecmint

Nell'esempio sopra, bash non può giudicare un valore non numerico come un errore, tuttavia printf sta interpretando cosa potrebbe essere un numero e cosa non potrebbe esserlo.

Variabili di sola lettura

Potresti aver sentito parlare della memoria di sola lettura (ROM), ma cos'è la variabile di sola lettura? Ha qualche somiglianza con la ROM?

Bene, le variabili di sola lettura come la memoria di sola lettura sono qualcosa il cui valore non può essere modificato una volta assegnato. Quindi si chiama Sola lettura. Non puoi scrivere, modificare o modificare un nuovo valore per quella variabile. Ecco un'illustrazione utilizzando un esempio.

Decalcare un nome di variabile di sola lettura (-r), il cui valore è “linux-console.net”.

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

Printf il valore della variabile sopra dichiarata.

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

linux-console.net

Prova a cambiare il valore della variabile.

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

bash: declare: name: readonly variable

Come discusso in precedenza, gli attributi di una variabile di sola lettura possono essere modificati utilizzando il segno "+".

Esportazione di variabili in Linux

Tutte le variabili di shell dichiarate in uno script di shell sono disponibili finché lo script non è in esecuzione. Al di fuori dello script la variabile dello script non esiste. Il processo di rendere disponibili le variabili al di fuori dello script è chiamato esportazione delle variabili.

Una variabile può essere esportata all'esterno della shell utilizzando l'interruttore declare -x (export), che riconosce alla shell ciò che desideri esportare. È possibile utilizzare un'opzione di esportazione dichiarata come.

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

Tutte le modifiche apportate alla variabile durante l'esecuzione dello script vengono perse quando la variabile viene esportata all'esterno dello script. L'esportazione della variabile è molto importante nello scripting della shell.

Vogliamo avere una variabile che sia di sola lettura e disponibile al di fuori dello script, dobbiamo usare switch -r e switch -x contemporaneamente.

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

variabili ambientali

Le variabili condivise tra il programma e il programma che le esegue. Le variabili d'ambiente possono essere esportate ma gli attributi non possono essere assegnati ad esse.

Comprendere praticamente la teoria di cui sopra. Qui abbiamo due script 0.sh e 1.sh.

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

E la seconda sceneggiatura lo è.

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

Qui quello che sta succedendo è che una variabile (nome) viene dichiarata come di sola lettura ed esportata e subito dopo viene chiamato il secondo script.

Il secondo script ha semplicemente stampato la variabile del primo script esportata nella prima istruzione printf. Nella seconda istruzione printf mostra il nuovo valore assegnato alla variabile "nome".

Non c'è bisogno di preoccuparsi che la variabile fosse di sola lettura, come può essere riassegnata. Non ricordi che “Tutte le modifiche apportate alla variabile mentre lo script è in esecuzione, vengono perse quando la variabile viene esportata all'esterno dello script. "

Riferimenti

Il comando dichiara consente tutte le opzioni seguenti insieme alla loro combinazione.

  1. -a : dichiara un array.
  2. -f: Visualizza funzione e definizione.
  3. -F: Visualizza il nome della funzione.
  4. -r : dichiara la variabile come di sola lettura.
  5. -x : dichiara la variabile come esportabile.
  6. -I: dichiara la variabile come intera.

È tutto per ora. Nel prossimo articolo discuteremo dei modi per sostituire le variabili utilizzando il comando "eval" e le variabili già definite in bash prima di chiudere questo argomento. Spero che vi stiate godendo il vostro viaggio verso l'approfondimento dello scripting. Fino ad allora restate sintonizzati e connessi a linux-console.net.