Cosa sono le variabili di Bash e come puoi usarle?
Bash consente di mappare intere stringhe di testo a singole variabili, semplificandone l’uso e la scrittura di script. Come funzionano e come puoi usarli? Scopriamolo.
Che cos’è una variabile Bash?
Le variabili sono nomi facili da ricordare che possono contenere diversi valori alfanumerici. Sono utili, in quanto consentono di applicare la stessa funzione su valori diversi, senza dover riscrivere uno script/pezzo di codice. Semplificano anche la scrittura dello script/pezzo di codice, poiché invece di gestire i singoli valori, è possibile utilizzare 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 attuale sessione di Bash. Possono assisterti nell’uso di Bash in molti modi diversi e scompariranno al termine della sessione corrente.
Ad esempio, supponiamo che tu stia visitando un gruppo di siti. Potresti fare ricerche o raschiare dati e creare la seguente variabile:
sitea=https://www.maketecheasier.com
Dopodiché, se desideri visitare il nostro sito con Firefox, puoi semplicemente digitare:
firefox $sitea
Molto più facile e più leggibile. La $sitea
variabile rimarrebbe mappata al sito fino a quando non ne hai modificato manualmente il contenuto o la sessione di Bash è terminata. E, naturalmente, puoi creare più variabili, come siteb
, sitec
e sited
.
Quando si impostano nuove variabili, è possibile utilizzare qualsiasi nome si desideri e memorizzare qualsiasi stringa alfanumerica al loro interno. Tieni presente, tuttavia, che fanno distinzione tra maiuscole e minuscole per impostazione predefinita. Quindi, $sitea
non sarebbe lo stesso di $SiteA
. Inoltre, tieni presente che dovresti usare le virgolette quando memorizzi stringhe con caratteri speciali al loro interno (inclusi gli spazi).
Variabili negli script
Le variabili in Bash sono più utili quando si scrivono script, in quanto consentono di scrivere un singolo script, che può quindi iterare attraverso diverse stringhe o agire su dati personalizzati. Supponiamo che tu stia scrivendo uno script che tutti potrebbero usare sul proprio computer, ma ogni volta visualizzerebbe un saluto personalizzato. Senza variabili, dovresti scrivere una versione diversa dello script per ogni utente. Con le variabili, mantieni lo script uguale e cambi solo il nome dell’utente.
Tale script sarebbe simile al seguente:
#!/bin/bash
username=Ramces
echo $username
L’esempio precedente può sembrare ridondante; tuttavia, con l’aumentare della complessità del codice, le variabili diventano indispensabili. Uno script può essere lungo centinaia o migliaia di righe e contenere il nome dell’utente in punti diversi. Per capirlo 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 precedente utilizzerà il nome definito come username
variabile per completare il testo. Se utilizzi il nome dell’utente effettivo, dovresti digitarlo quattro volte, quindi fare lo stesso per l’utente successivo e altre quattro volte per il successivo. Ancora e ancora. Assegnandolo a una variabile, devi solo cambiarlo una volta per ogni utente, e ogni menzione del nome dell’utente nel testo verrà aggiornata.
Alias e variabili Bash permanenti
Abbiamo visto come puoi impostare temporaneamente le variabili e come, per qualcosa di più permanente, puoi includerle nei tuoi script. Puoi anche impostare in modo permanente 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’esecuzione di prova, aggiungendo solo una singola variabile, in modo da sapere dove cercare se il processo non funziona. Spostati 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 quanto segue nel tuo terminale affinché abbia effetto:
source ~/.bashrc
- Usa la variabile appena impostata nella tua sessione Bash:
echo $myname
Puoi impostare tutte le variabili che desideri e semplificare notevolmente le tue avventure quotidiane in Bash.
Per un ulteriore aumento della produttività, vale anche la pena impostare un diverso tipo di variabile: gli alias. A differenza delle variabili tipiche, che sono mappate ai dati che puoi usare nei comandi, gli alias vengono usati invece dei comandi effettivi.
Proprio come puoi usare una variabile semplice da ricordare per contenere lunghe stringhe di testo, puoi usare gli alias come facili alternative a comandi complessi.
Infine, anche se hai impostato permanentemente una variabile in. bashrc, puoi riassegnarle temporaneamente un valore diverso, come abbiamo visto prima. La variabile presenterà il nuovo contenuto fino al termine dell’attuale sessione di Bash (dopo la disconnessione o il riavvio) o fino a quando non si re-source il file. bashrc .
Creazione di matrici
Mentre la maggior parte degli utenti di Bash pensa alle variabili come a un semplice collegamento tra un dato e un’etichetta, è anche possibile utilizzarle come marker per gli array. Si tratta di un tipo di struttura dati in grado di memorizzare più valori in un formato di indice numerato. Per creare un array, procedi nel seguente modo:
- Crea uno script shell vuoto:
nano array.sh
- Utilizzare il
declare
sottocomando per inizializzare l’array Bash nel processo di shell corrente.
declare -a myarray
- Popolare il nuovo array utilizzando l’operatore di assegnazione Bash integrato. 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
echo
comando per estrarre i dati da esso:
echo ${myarray[1]}
Puoi anche eseguire lo streaming del contenuto di un array utilizzando l’operatore “*”:
echo ${myarray[*]}
Esecuzione di variabili Subshell
Una delle più grandi caratteristiche di Bash è la sua capacità di creare subshell, dove i programmi possono essere eseguiti come se fossero funzioni di base. Ad esempio, scrivere ls -a
in uno script di shell ed eseguirlo stamperà comunque il contenuto della directory di lavoro corrente.
Sebbene ciò possa sembrare limitante, Bash lo estende consentendo di memorizzare l’output di questi programmi all’interno di variabili. Ciò ti consente di usarli come input per altri programmi all’interno del tuo script.
- Per utilizzare le variabili subshell, creare prima uno script di shell vuoto:
nano subshell.sh
- Scrivi il seguente codice boilerplate all’interno del tuo nuovo script di shell:
#!/bin/bash
mysubshell=$(x)echo "The output of the variable is $mysubshell"
- Sostituisci la “x” con il comando che desideri eseguire e memorizza l’output. Ad esempio, quanto segue 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 subshell eseguendo il tuo nuovo script:
chmod u+x. /subshell.sh
bash. /subshell.sh
Manipolazione di sottostringa
Oltre a memorizzare e recuperare i dati, è anche possibile modificare il contenuto delle variabili. Bash ha una serie di operatori che puoi allegare alla fine di ogni variabile, che ti permetteranno di mettere a punto 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 "My filename is: ${mysubstring}"
- La manipolazione di sottostringa di base si presenta in tre forme. Innanzitutto, il carattere “#” accetta un pattern regex che la shell rimuoverà all’inizio della variabile:
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring#*.}"
- In secondo luogo, il carattere “%” accetta anche un pattern regex che la shell rimuoverà alla fine della variabile:
#!/bin/bash
mysubstring=hello.txt.old
echo "My filename is: ${mysubstring%.*}"
- Bash fornisce anche un modo per modificare selettivamente il contenuto di una variabile. Simile al
sed
programma, puoi usare il carattere “/” per trovare e sostituire qualsiasi stringa all’interno di una variabile:
#!/bin/bash
mysubstring=hello.txt
echo "My filename is: ${mysubstring/hello/maketecheasier}"
Domande frequenti
È possibile eseguire uno script di shell all’interno di una variabile?
Sì, scrivendo il percorso completo dello script che si desidera eseguire. Ad esempio, l’esecuzione $(/home/ramces/.scripts/sample.sh)
creerà una subshell Bash ed eseguirà lo script “sample.sh” dalla mia home directory.
Puoi rimuovere una variabile mentre uno script è in esecuzione?
SÌ. Puoi rimuovere una variabile da un processo shell in esecuzione inserendo il unset
sottocomando seguito dal nome della variabile nel tuo script. È importante notare che l’esecuzione di questo comando non rimuoverà alcuna variabile che viene eseguita al di fuori del processo di shell corrente.
Puoi usare una variabile permanente all’interno di uno script di shell esterno?
SÌ. È possibile fare riferimento al valore di una variabile che è stata dichiarata al di fuori del processo di shell corrente. Tuttavia, devi anche fare attenzione quando usi variabili esterne, poiché è facile sovrascriverle temporaneamente.
Credito immagine: Unsplash . Tutte le modifiche e gli screenshot di Ramces Red.
Lascia un commento