GNU/Linux >> Linux Esercitazione >  >> Linux

Modi insoliti per utilizzare le variabili all'interno degli script Bash

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).

Indice indica semplicemente la posizione dell'elemento nell'array. Allo stesso modo, l'indice 0 è l'elemento 0 all'interno dell'array.

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 stringa name , seguito da:
  • name sostituito al suo valore di Linux 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.


Linux
  1. Cinque modi per utilizzare gli operatori di reindirizzamento in Bash

  2. Gestione degli errori negli script Bash

  3. Utilizzare l'estensione .sh o .bash per gli script Bash?

  4. Alias ​​con variabile in bash

  5. Usa la variabile Bash all'interno dello script sbatch SLURM

Differenza tra la definizione di variabili Bash con e senza esportazione

Bash Scripting:variabili spiegate con esempi

Come utilizzare il comando echo negli script Bash in Linux

Bash Beginner Series #2:Comprensione delle variabili nello scripting di Bash Shell

Esercitazione sulle variabili Bash:6 esempi pratici di variabili globali e locali Bash

Come utilizzare Linux Bash Shell in Windows 10?