Ricerca nel sito web

Uno sguardo alle "variabili" di Linux nel linguaggio di scripting della shell - Parte 9


Abbiamo già scritto una serie di articoli sul Linux Shell Scripting che furono accolti calorosamente all'epoca ed erano molto rilevanti anche adesso. Ecco il collegamento alla raccolta di articoli sullo scripting di shell.

  1. Impara lo scripting della shell Linux

Qui in questo articolo vedremo le variabili, la sua esecuzione e la sua implementazione nello script di shell.

Salvataggio di un output

L'output di un comando può essere reindirizzato all'output standard o a un file e può anche essere memorizzato in una variabile. Se l'output di un comando è abbastanza grande da non adattarsi allo schermo, ci rimane solo la possibilità di salvare l'output in un file in una variabile. Un vantaggio di salvare l'output in formato variabile è la maggiore velocità dell'esame. Le variabili vengono salvate in memoria e quindi tende ad essere veloce rispetto al recupero dal file.

Variabili nel linguaggio di scripting

Le variabili sono un componente importante utilizzato negli script di Shell e vengono dichiarate utilizzando il comando bash “Dichiara”. Per dichiarare una variabile, ad esempio "livello", dobbiamo eseguire il comando seguente.

declare LEVEL

Nota: dobbiamo utilizzare “typecast”, un'istruzione integrata per la compatibilità della shell korn. La "dichiarazione" è più avanzata e contiene tutte le funzionalità, quindi è consigliata quando si utilizza BASH.

Regole
  1. Il nome di una variabile deve giustificare l'uso della variabile nello script.
  2. Si consiglia vivamente di utilizzare lo stesso nome di variabile in tutto il programma.
  3. I nomi delle variabili possono essere sia maiuscoli che minuscoli ma per convenzione i comandi della shell sono in minuscolo e quindi dovremmo usare i nomi delle variabili in maiuscolo, in modo da eliminare qualsiasi confusione. ad esempio, TOTALE_IMPORTO_BILLED, SELL_REPORT, ORDER_RECEIPT, ecc.

Implementazione

A una variabile può essere assegnato un valore utilizzando un segno di uguale (=). Per assegnare una stringa vuota ad una variabile non dobbiamo fornire alcun valore dopo il segno uguale.

LEVEL =

Controlla il valore memorizzato nella variabile "LEVEL" come.

printf "%i" $LEVEL

printf, il comando di cui è a conoscenza la maggior parte dei programmatori "C", stampa i dati. %i – Rappresenta il numero intero. Possiamo sostituirlo con %c per carattere o %c per stringa, come e quando richiesto.

$LEVEL: nota il ‘$‘ che funziona come sostituto del valore per la variabile ‘LEVEL’.

Uscita del campione
printf "%i" $LEVEL
0

Assegnare un valore alla variabile.

LEVEL=0

Controlla i dati memorizzati nella variabile.

printf "%i" $LEVEL
0

NOTA: è interessante notare che in entrambi i casi, quando non abbiamo assegnato il valore alla variabile e quando abbiamo assegnato il valore '0<' alla variabile 'LEVEL' restituisce 0. Sebbene l'output sia lo stesso in entrambi i casi, lo script di shell gestisce entrambe le dichiarazioni di variabile in modo diverso.

Assegnare un nuovo valore alla variabile.

LEVEL=121

Controlla i dati memorizzati nella variabile.

printf "%i" $LEVEL
121

Annulla l'impostazione di una variabile

Dichiara è un comando BASH e crea una variabile solo quando viene eseguito. La variabile così creata rimane in memoria finché lo script non si interrompe o la variabile non viene distrutta.

unset LEVEL

Variabili predefinite in BASH

BASH ha oltre 50 variabili predefinite. Alcune di queste variabili hanno un significato speciale associato a BASH, ad esempio una variabile RANDOM restituisce un numero casuale. Se viene disattivata e quindi definita nuovamente, il valore della variabile originale viene perso per sempre. Pertanto si consiglia di non utilizzare alcuna variabile definita dal sistema.

Ecco un elenco di alcune utili variabili BASH.

  1. BASH: il percorso completo di Bash.
  2. BASH_ENV: in uno script di shell, il nome del file di profilo eseguito prima dell'avvio dello script.
  3. BASH_VERSION: la versione di Bash (ad esempio, 2.04.0(1)-release).
  4. COLONNE: il numero di caratteri per riga sul display (ad esempio, 80).
  5. HOSTNAME: il nome del computer. In alcune versioni di Linux, questo può essere il nome della macchina. In altri, può essere un nome di dominio completo.
  6. HOSTTYPE: tipo di computer.
  7. HOME: il nome della directory home.
  8. OSTYPE: il nome del sistema operativo.
  9. PERCORSO: elenco separato da due punti di percorsi di ricerca per trovare un comando da eseguire.
  10. PPID: l'ID del processo genitore della shell.
  11. PROMPT_COMMAND: comando da eseguire prima dell'impostazione della stringa del prompt primario PS1.
  12. PWD: la directory di lavoro corrente (come impostata dal comando cd).
  13. RANDOM: restituisce un numero casuale compreso tra 0 e 32767 ogni volta che viene fatto riferimento.
  14. SHELL: la shell preferita da utilizzare; per i programmi che avviano una shell per te.
  15. TERM: il tipo di emulazione terminale (ad esempio, console).

La regola della divisione delle parole.

LEVEL=0
printf "%i" $LEVEL
0

AND

LEVEL=”0”
printf "%i" $LEVEL
0

In entrambi i casi l'output rimane lo stesso. Quindi qual è la differenza nel risultato quando si utilizza la citazione?

Controlliamo lo stesso con dati variabili diversi.

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

Per non parlare del fatto che l'output non è corretto. BASH prende lo spazio dopo "0" come terminazione e quindi il valore della variabile è impostato come "0". Ora proviamo a utilizzare le virgolette per le variabili come di seguito.

LEVEL=”0 ; 1 ; 2 ; 3 ; 4 ; 5”
printf "%s" $LEVEL 
0;1;2;3;4;5

Tuttavia il risultato non è corretto. BASH ha preso i valori delle variabili e ha rimosso tutti gli spazi tra di loro. Quindi printf non ha interpretato 0,1,2,3,4,5 come valori distinti. Allora qual è la soluzione?

printf "%s" "$LEVEL" 
0 ; 1 ; 2 ; 3 ; 4 ; 5

Sì! Mettere la sostituzione della variabile tra virgolette è la soluzione. Le virgolette raggruppano i caratteri nella shell e interpretano i caratteri speciali in modo significativo.

Le virgolette possono essere utilizzate una dopo l'altra ed è una buona idea racchiudere le sostituzioni di variabili tra virgolette. Inoltre può essere utilizzato per separare il testo complessivo dalle citazioni. Ecco un esempio.

LEVEL=5 
FLAG_MESSAGE="I HAVE CLEARED LEVEL""$LEVEL"". I Deserve appreciation." 
printf “%s” “$FLAG_MESSAGE”
“I HAVE CLEARED LEVEL5. I Deserve appreciation.”

Separare pezzi di testo citato con spazi comporterà lo stesso problema discusso sopra. La bash tratterà lo spazio bianco come terminazione. Un altro modo di sostituzione delle variabili è.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%s” "$FLAG_MESSAGE" 
“I HAVE CLEARED LEVEL 5. I Deserve appreciation.”

Le virgolette singole impediscono a BASH di stampare caratteri speciali.

printf “%s” '$FLAG_MESSAGE'
“$FLAG_MESSAGE”

La barra rovesciata (/)

La barra rovesciata funziona come una virgoletta singola per un carattere. Hai pensato a come stamperai ()?

printf "%c" "\""

Quando %q è raggruppato con printf, fornisce una barra rovesciata dopo ogni parola per garantire la spaziatura tra le parole.

LEVEL=5

FLAG_MESSAGE="I HAVE CLEARED LEVEL ${LEVEL}. I Deserve appreciation." 

printf “%q” "$FLAG_MESSAGE" 
“I\ HAVE\ CLEARED\ LEVEL\ 5.\ I\ Deserve\ appreciation.”

È tutto per ora. Cerchiamo sempre di fornire ai nostri lettori articoli che siano loro utili di tanto in tanto. L'articolo sopra trattato è vasto, quindi il resto degli argomenti con esempi verrà prodotto nel prossimo articolo che includerà "Attributi della variabile", "Esportazione delle variabili" ecc.

Fino ad allora Resta sintonizzato e connesso a linux-console.net. Non dimenticare di fornirci il tuo prezioso feedback nella sezione commenti qui sotto.