Cosa Sono le Variabili Bash e Come Puoi Usarle?

Bash ti consente di mappare intere stringhe di testo a singole variabili, semplificando il loro utilizzo e la scrittura di script. Come funzionano e come puoi usarle? Scopriamolo.
Indice dei Contenuti
- Cos’è una Variabile Bash?
- Variabili in Tempo Reale
- Variabili negli Script
- Variabili Bash Permanenti e Alias
- Creazione di Array
- Esecuzione di Variabili di Sottoshell
- Manipolazione di Sottostringhe
- Domande Frequenti
Cos’è una Variabile Bash?
Le variabili sono nomi facili da ricordare che possono contenere diversi valori alfanumerici. Sono utili, poiché consentono di applicare la stessa funzione a valori diversi, senza dover riscrivere uno script/un pezzo di codice. Rendono anche più facile la scrittura dello script/pezzo di codice, poiché invece di dover gestire valori individuali, puoi usare lo stesso nome per tutti.
Variabili in Tempo Reale
Bash consente l’uso di variabili. Puoi creare variabili al volo e riutilizzarle durante la tua sessione Bash attuale. Possono assisterti nell’uso di Bash in molti modi diversi e scompariranno dopo la fine della sessione corrente.
Ad esempio, supponiamo che tu stia visitando un sacco di siti. Potresti fare ricerche o raccogliere dati e creare la seguente variabile:
sitea=https://www.maketecheasier.com
Dopo di che, se volessi visitare il nostro sito con Firefox, potresti semplicemente digitare:
firefox $sitea
Molto più facile – e più leggibile. La variabile $sitea rimarrebbe mappata al sito fino a quando non ne cambiassi manualmente il contenuto o la sessione Bash terminasse. E, naturalmente, puoi creare più variabili, come siteb, sitec e sited.
Quando imposti nuove variabili, puoi usare qualsiasi nome tu voglia e memorizzare al loro interno qualsiasi stringa alfanumerica. Tieni presente, però, che sono sensibili al maiuscolo per impostazione predefinita. Quindi, $sitea non sarebbe lo stesso di $SiteA. Inoltre, nota che dovresti usare le virgolette quando memorizzi stringhe con caratteri speciali al loro interno (compresi gli spazi).
Suggerimento: per coloro che sono nuovi a Bash, inizia con questi comandi Bash di base.
Variabili negli Script
Le variabili in Bash sono più utili quando si scrivono script, poiché consentono di scrivere un singolo script, che può quindi iterare attraverso diverse stringhe o agire su pezzi di dati personalizzati. Supponiamo che tu stia scrivendo uno script che tutti potrebbero usare sul proprio computer, ma che ogni volta mostrerebbe un saluto personalizzato. Senza variabili, dovresti scrivere una versione diversa dello script per ogni utente. Con le variabili, mantieni lo script lo stesso e cambi solo il nome dell’utente.
Uno script del genere potrebbe apparire simile al seguente:
#!/bin/bash
username=Ramces
echo$username
L’esempio sopra potrebbe sembrare ridondante; tuttavia, man mano che la complessità del codice aumenta, le variabili diventano indispensabili. Uno script potrebbe essere lungo centinaia o migliaia di righe e contenere il nome dell’utente in diversi punti. Per comprenderlo meglio, considera il seguente script leggermente diverso:
#!/bin/bash
username=Linus
echo Hello $username. This is a simple script I wrote that will repeat your name - that is, $username - often as an actual example of how to use Bash variables. I hope it will make it easier to understand how to use variables to improve your Bash workflow, $username. In this case, the variable username is mapped to your name. Whenever Bash runs into it, it replaces it with $username.
Lo script sopra utilizzerà il nome definito come variabile username per completare il testo. Se usassi il nome reale dell’utente, dovresti digitarlo quattro volte, poi fare lo stesso per il prossimo utente, e altre quattro volte per il successivo. Ancora e ancora. Assegnandolo a una variabile, devi cambiarlo solo una volta per ogni utente, e ogni menzione del nome dell’utente nel testo verrà aggiornata.
Buono a sapersi: oltre alle variabili, puoi anche usare il ciclo for in Bash.
Variabili Bash Permanenti e Alias
Abbiamo visto come puoi impostare temporaneamente le variabili e come, per qualcosa di più permanente, puoi includerle nei tuoi script. Puoi anche impostare permanentemente le variabili in Bash modificando il file “~/.bashrc”.
- Apri il file “~/.bashrc” nel tuo editor di testo preferito.
nano ~/.bashrc- Ti suggeriamo di iniziare con un test, aggiungendo solo una singola variabile, in modo da sapere dove guardare se il processo non funziona. Vai alla fine del file e, in una nuova riga, aggiungi la tua variabile.
myname="Ramces Red"
- Salva il tuo file ed esci dall’editor. Le modifiche non verranno applicate immediatamente. Inserisci il seguente comando nel tuo terminale affinché abbia effetto:
source ~/.bashrc- Utilizza la nuova variabile impostata nella tua sessione Bash:
echo$mynamePuoi impostare quante più variabili desideri e semplificare notevolmente le tue avventure quotidiane in Bash.
Per un ulteriore impulso alla produttività, vale anche la pena impostare un altro tipo di variabile: alias. A differenza delle variabili tipiche, che sono mappate ai dati che puoi utilizzare nei comandi, gli alias vengono utilizzati invece di comandi reali.
Proprio come puoi usare una variabile facile da ricordare per contenere lunghe stringhe di testo, puoi usare gli alias come alternative facili a comandi complessi. Puoi scoprire di più su di essi qui, dove trasformiamo un intero comando di compressione 7zip in un alias di due caratteri.
Infine, anche se hai impostato permanentemente una variabile in .bashrc, puoi temporaneamente riassegnare un valore diverso ad essa, come abbiamo visto prima. La variabile presenterà il nuovo contenuto fino a quando la sessione Bash corrente non terminerà (dopo il logout o il riavvio) o fino a quando non ri-sorgi il file .bashrc.
Creazione di Array
Mentre la maggior parte degli utenti Bash pensa alle variabili come a un semplice collegamento tra un pezzo di dati e un’etichetta, è anche possibile usarle come un marcatore per gli array. Questi sono un tipo di struttura dati che può memorizzare più valori in un formato di indice numerato. Per creare un array, segui i passaggi seguenti:
- Crea uno script shell vuoto:
nano array.sh- Usa il sottocomando
declareper inizializzare l’array Bash nel processo shell corrente.
declare-a myarray
- Popola il tuo nuovo array utilizzando l’operatore di assegnazione incorporato di Bash. Ad esempio, la seguente riga di codice crea un array con cinque elementi al suo interno:
myarray=([0]=hello [1]=maketecheasier [2]=its [3]=an [4]=array)
- Verifica se il tuo nuovo array funziona utilizzando il comando
echoper estrarre dati da esso:
echo${myarray[1]}
Puoi anche trasmettere i contenuti di un array utilizzando l’operatore “*”:
echo${myarray[*]}
Esecuzione di Variabili di Sottoshell
Una delle caratteristiche più grandi di Bash è la sua capacità di creare sottoshell, dove i programmi possono essere eseguiti come se fossero funzioni di base. Ad esempio, scrivere ls -a in uno script shell e eseguirlo stamperà comunque il contenuto della directory di lavoro corrente.

Sebbene questo possa sembrare limitante, Bash estende questo consentendo di memorizzare l’output di questi programmi all’interno delle variabili. Questo ti consente di usarli come input per altri programmi all’interno del tuo script.
- Per utilizzare le variabili di sottoshell, prima crea uno script shell vuoto:
nano subshell.sh- Scrivi il seguente codice boilerplate all’interno del tuo nuovo script shell:
#!/bin/bash
mysubshell=$(x)
echo"L'output della variabile è $mysubshell"- Sostituisci “x” con il comando che desideri eseguire e memorizzare l’output. Ad esempio, il seguente comando otterrà il contenuto del file world.txt e sostituirà la parola “world” con “maketecheasier.”
mysubshell=$(sed s/world/maketecheasier/g world.txt)
- Testa la tua nuova variabile di sottoshell eseguendo il tuo nuovo script:
chmod u+x ./subshell.sh
bash ./subshell.sh
FYI: oltre alle variabili, questi sono i caratteri speciali che dovresti conoscere in Bash.
Manipolazione di Sottostringhe
Oltre a memorizzare e recuperare dati, puoi anche modificare i contenuti delle variabili. Bash ha un insieme di operatori che puoi allegare alla fine di ogni variabile, che ti consentiranno di perfezionare i tuoi script senza chiamare programmi aggiuntivi.
- Crea uno script shell vuoto:
nano substring.sh- Scrivi il seguente codice boilerplate all’interno del tuo script vuoto:
#!/bin/bash
mysubstring=hello.txt.old
echo"Il mio nome file è: ${mysubstring}"- La manipolazione di sottostringhe di base si presenta in tre forme. Prima, il carattere “#” accetta un modello regex che la shell rimuoverà all’inizio della variabile:
#!/bin/bash
mysubstring=hello.txt.old
echo"Il mio nome file è: ${mysubstring#*.}"
- Secondo, il carattere “%” accetta anch’esso un modello regex che la shell rimuoverà alla fine della variabile:
#!/bin/bash
mysubstring=hello.txt.old
echo"Il mio nome file è: ${mysubstring%.*}"
- Bash fornisce anche un modo per modificare selettivamente i contenuti di una variabile. Simile al programma
sed, puoi usare il carattere “/” per trovare e sostituire qualsiasi stringa all’interno di una variabile:
#!/bin/bash
mysubstring=hello.txt
echo"Il mio nome file è: ${mysubstring/hello/maketecheasier}"
Buono a sapersi: le espressioni regolari sono uno strumento importante nel toolkit di ogni utente Linux. Scopri come usarle in modo efficace attraverso la nostra facile guida.
Domande Frequenti
È possibile eseguire uno script shell all’interno di una variabile?
Sì, scrivendo il percorso completo dello script che desideri eseguire. Ad esempio, eseguire $(/home/ramces/.scripts/sample.sh) creerà una sottoshell Bash ed eseguirà lo script “sample.sh” dalla mia directory home.
Puoi rimuovere una variabile mentre uno script è in esecuzione?
Sì. Puoi rimuovere una variabile da un processo shell in esecuzione inserendo il sottocomando unset seguito dal nome della variabile nel tuo script. È importante notare che eseguire questo comando non rimuoverà alcuna variabile che viene eseguita al di fuori del processo shell corrente.
Puoi usare una variabile permanente all’interno di uno script shell esterno?
Sì. È possibile fare riferimento al valore di una variabile che è stata dichiarata al di fuori del processo shell corrente. Tuttavia, devi anche prestare attenzione quando usi variabili esterne, poiché è facile sovrascriverle temporaneamente.
Crediti immagine: Unsplash. Tutte le modifiche e gli screenshot sono di Ramces Red.