Cosa sono le variabili di Bash e come puoi usarle?

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

Un terminale che mostra un'assegnazione di variabile di base.

Dopodiché, se desideri visitare il nostro sito con Firefox, puoi semplicemente digitare:

firefox $sitea

Un terminale che mostra una variabile come argomento per un programma.

Molto più facile e più leggibile. La $siteavariabile 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, sitece 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, $siteanon 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

Un terminale che mostra uno script di base per l'assegnazione delle variabili.

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.

Un terminale che mostra uno script di base con più sostituzioni di variabili.

Lo script precedente utilizzerà il nome definito come usernamevariabile 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"

Un terminale che mostra una nuova variabile permanente all'interno del file bashrc.
  • 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 declaresottocomando per inizializzare l’array Bash nel processo di shell corrente.

declare -a myarray

Un terminale che mostra il passo di dichiarazione per un array.
  • 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)

Un terminale che mostra un array di base con 5 elementi.
  • Verifica se il tuo nuovo array funziona utilizzando il echocomando per estrarre i dati da esso:

echo ${myarray[1]}

Un terminale che mostra lo script dell'array che recupera un singolo elemento dell'array.

Puoi anche eseguire lo streaming del contenuto di un array utilizzando l’operatore “*”:

echo ${myarray[*]}

Un terminale che mostra lo script dell'array che esegue lo streaming dell'intero array.

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 -ain uno script di shell ed eseguirlo stamperà comunque il contenuto della directory di lavoro corrente.

Un terminale che mostra una semplice subshell di comando.

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)

Un terminale che mostra una semplice esecuzione di subshell.
  • Testa la tua nuova variabile subshell eseguendo il tuo nuovo script:

chmod u+x. /subshell.sh
bash. /subshell.sh

Un terminale che mostra l'output dello script subshell.

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#*.}"

Un terminale che mostra la manipolazione di base della sottostringa del prefisso.
  • 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%.*}"

Un terminale che mostra la manipolazione di base della sottostringa postfix.
  • Bash fornisce anche un modo per modificare selettivamente il contenuto di una variabile. Simile al sedprogramma, 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}"

Un terminale che mostra una funzione di sottostringa di modifica del flusso di base.

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 unsetsottocomando 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

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *