Probabilmente sei a conoscenza delle variabili nello scripting della shell Bash.
Come altri linguaggi di programmazione e scripting, utilizzi le variabili per memorizzare i dati e quindi farvi riferimento in seguito nei comandi futuri.
name="Linux Handbook"
echo "Hello $name!"
E stamperà "Hello Linux Handbook!".
Al di fuori dell'esempio sopra, c'è anche una quantità sorprendentemente grande di cose che puoi fare con le variabili, come compilare un valore predefinito quando la variabile non è impostata e assegnare più valori a una singola variabile.
Lascia che ti mostri questi utilizzi insoliti e avanzati delle variabili nello scripting bash.
Utilizzo di array
Escludendo l'esempio sopra, il tipo più comune di variabile che troverai in Bash sono gli array:
name=("Linux Handbook" "It's FOSS")
L'esempio sopra assegna entrambi Linux Handbook
e It's FOSS
come valori per il name
variabile.
Come si fa ad accedere a ciascun valore?
Se esegui echo $name
, vedrai che stampa il primo valore, Linux Handbook
. Per accedere agli altri valori, dovrai utilizzare una sintassi diversa per le variabili.
Per iniziare a estrarre gli altri valori, iniziamo a familiarizzare con quanto segue:
echo "Hello ${name}!"
Questa è la base per ciò che ti consentirà di ottenere tutti i valori della variabile, ed è anche ciò che ti consentirà di eseguire il resto dei metodi per interagire con le variabili nel resto di questo articolo.
Tornando all'esempio sopra citato, puoi usare il ${variable[number]}
sintassi per estrarre un determinato elemento da una variabile:
echo "Hello ${name[1]}!"
Questo stamperà "Hello It's FOSS!"
Se non riesci già a vedere dall'esempio sopra, il primo elemento nell'array inizia effettivamente da 0 anziché da 1.
Quindi per estrarre il Linux Handbook
valore, tireresti l'oggetto alla posizione 0:
echo "Hello ${name[0]}!"
Allo stesso modo, semplicemente omettendo il [number]
parte rende semplicemente predefinito il primo elemento nell'array (che si trova all'indice 0).
E quelli costituiscono tutti i tipi di variabili che troverai effettivamente all'interno di Bash.
Ora entriamo nel modo in cui puoi effettivamente lavorare e modificare l'output di quelle variabili quando le chiamiamo.
Impostazione del valore quando una variabile non è impostata
Puoi riportare una variabile di default su una determinata stringa quando una variabile non è impostata in questo modo:
${variable:-string}
Prendi questo esempio:
echo "Hello ${name:-nobody}!"
Poiché la variabile name
non è impostato, verrà impostato come predefinito su nobody
e il comando sopra stamperà "Ciao nessuno!".
Se la variabile è impostata in anticipo, verrà utilizzato il suo valore:
name="Linux Handbook"
echo "Hello ${name:-nobody}!"
Il comando precedente stampa "Hello Linux Handbook!"
Impostazione del valore quando una variabile è già impostato
Puoi anche impostare una variabile per restituire un determinato valore quando la variabile è impostare. Ciò farebbe sì che la variabile stampi una determinata stringa ogni volta che è impostata e non stampa nulla quando non lo è.
La sintassi per questo metodo è simile a quella precedente, ma utilizza il +
segno invece di -
.
${variable:+string}
Prendi questo esempio in cui il nome della variabile non è impostato. Quindi non stamperà nulla per quella parte variabile e l'output per il comando sarà "Ciao!"
echo "Hello ${name:+person}!"
Modifica l'esempio sopra e imposta la variabile name
. Con questo metodo speciale, non utilizzerà il valore già impostato e utilizzerà quello fornito.
name="Linux Handbook"
echo "Hello ${name:+person}!"
Il comando precedente stamperà "Ciao persona!".
Probabilmente troverai più casi d'uso con ${variable:-string}
sintassi, come alcuni dei vantaggi di ${variable:+string}
può già essere realizzato con altri strumenti come il test ([]
) operatore:
Riferimenti indiretti alle variabili
Il prossimo esempio utilizzerà la seguente sintassi:
${!variable}
Questo è un po' più complesso nel modo in cui funziona, ma ha senso dopo aver visto come funziona:
name="Linux Handbook"
variable="name"
echo "Hello ${!variable}!"
Stamperà "Hello Linux Handbook".
Quel !
carattere prima del nome della variabile provoca la sostituzione del normale nome della variabile, ma poi usa il nome di quello s cercare di trovare la variabile rilevante.
Allo stesso modo:
variable
viene sostituita dalla stringaname
, seguito da:name
sostituito al suo valore diLinux Handbook
.
Trovare la lunghezza di una variabile
Usiamo il metodo precedente, ma scambiamo il !
carattere per #
:
${#variable}
L'uso di questo metodo stamperà la lunghezza della variabile, ma agirà in modo leggermente diverso a seconda che la variabile sia una stringa o un array.
Usando quella sintassi su una stringa sostituirà la variabile con la quantità di caratteri nella stringa.
variable="name"
echo "Length is ${#variable}."
Verrà stampato 4. Ma d'altra parte, utilizzandolo su un array stamperà il numero di elementi all'interno dell'array, ovvero la dimensione dell'array, che qui è 2.
variable=("name" "word")
echo "Length is ${#variable}."
Stringhe minuscole e maiuscole
Infine, puoi mettere in maiuscolo e minuscolo una stringa usando il ^
e ,
rispettivamente gli operatori.
Fornisci questi alla fine del nome della variabile in questo modo:
# Capitalizes
${variable^}
${variable^^}
# Lowercases
${variable,}
${variable,,}
Qual è la differenza tra fornire uno e due caratteri?
Fornirne solo uno (ad esempio ${variable^}
) comporterà la modifica solo della prima lettera, fornendo due (${variable^^}
) comporterà la modifica dell'intera stringa.
L'esempio seguente stampa Name
invece di name
:
variable="name"
echo "${variable^}"
Ma questo stampa NAME
:
variable="name"
echo "${variable^^}"
Allo stesso modo, puoi anche stampare le variabili in minuscolo.
L'esempio seguente stamperà wIDEname
:
variable="WIDEname"
echo "${variable,}"
E questo stamperà widename
:
variable="WIDEname"
echo "${variable,,}"
Conclusione
Questi sono solo alcuni dei modi in cui puoi utilizzare le variabili all'interno di Bash. Puoi trovare vari altri modi per interagire con le variabili all'interno della documentazione di Bash sull'espansione delle variabili.
Hai qualche domanda su come hanno funzionato gli esempi sopra, o qualcosa semplicemente non funziona correttamente? Sentiti libero di lasciare qualsiasi cosa nella sezione commenti qui sotto.