[Guida] Bash Fundamentals: come creare script per GNU/Linux
Questa breve guida vuole essere una schematizzazione dei concetti base per programmare con Bash in GNU/Linux. Come per tutti i linguaggi, tuttavia, anche in questo caso l’unico modo davvero efficace per capirne il funzionamento è leggere tanto, tanto codice.
Programmazione Bash: interazione tra comandi
Prima di capire come è strutturato uno script, è necessario introdurre alcuni concetti chiave. In particolare bisogna capire come i vari comandi eseguibili in Bash riescono ad interagire tra loro. Spesso, infatti, risulta pratico utilizzare diversi comandi in un’unica istruzione, ma si vuole condizionare l’esecuzione delle istruzioni successive alla buona riuscita di quelle precedenti. In tal caso va utilizzato l’operatore &&. Viceversa, l’operatore || esegue la seconda istruzione solo se la prima fallisce.
echo “Hello World” > ciaomondo #creo il file ciaomondo contenente una stringa; cat ciaomondo && cat nonesisto #stampa contenuto primo file e produce errore file inesistente cat nonesisto && cat ciaomondo #produce errore
In Linux, tuttavia, bisogna tener presente che si potrebbe non arrivare al risultato atteso. Non tutti i programmi, infatti, funzionano allo stesso modo e potrebbe capitare di dover leggerne la documentazione o addirittura il codice sorgente, per capire in che circostanze quel particolare processo produca un fallimento come risposta.
Per quanto riguarda il redirect dell’I/O ed il pipeline tra processi, invece, potete fare riferimento a questa guida pubblicata sempre qui su LFFL.
Shell script
Lo scripting della shell non è utile solo per il raggruppamento di più comandi, ma permette anche di controllare il flusso delle istruzioni basandosi sugli input dell’utente (o di altri processi). La struttura di uno script eseguibile in Bash è semplicissima. Create un nuovo file.sh ed utilizzate come intestazione:
#! /usr/bin/env bash
Questa serve ad indicare alla macchina la posizione dell’interprete che deve eseguire le successive linee di codice contenute nello script. All’interno degli script si possono utilizzare costrutti condizionati, cicli, funzioni ma anche i comandi che generalmente utilizzate nel terminale come cp o ls. Per eseguire un file, poi, basterà recarsi all’interno della cartella che lo contiene e avviarlo con una sintassi simile alla seguente:
./file.sh
Variabili
Per quanto riguarda le variabili, Bash è un linguaggio a tipizzazione dinamica, non è necessario, quindi, specificarne il tipo al momento della loro dichiarazione. Per inizializzare una variabile e, successivamente, richiamarne il valore, la sintassi è:
comando=echo #una variabile può contenere anche un comando Bash ${comando} "Ciao Mondo" #ne richiamo il contenuto con ${ ... } nome[0]="Linus" #inizializzo un array nome[1]="Richard" echo ${nome[1]} read -p "inserire un numero: " valore #per inizializzare la variabile tramite input
Bash: condizioni e cicli
Se masticate le basi di programmazione sapete sicuramente a cosa serve condizionare o ciclare una serie di istruzioni all’interno di un programma. In bash l’utilizzo di questo genere di istruzioni funziona come ci si aspetta. Ad esempio, è possibile utilizzare <b>if</b> nel seguente modo:
read -p "inserire un numero: " valore resto=$(expr $valore % 2) if [ $resto -eq 0 ]; then echo "pari" else echo "dispari" fi
Quello che ho evidenziato in grassetto è il comando test, che serve proprio a verificare le condizioni. Sono possibili numerose opzioni, visualizzabili da man test. Ad esempio nel seguente screenshot vi ho riportato quelle relative all’esistenza o meno di un file specifico.
Per quanto riguarda la creazione di alias e funzioni, infine, potete fare riferimento a questa guida.
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.