Shell Bash - 2 - Primi passi con gli script

Posted by RedBlue on October 10, 2011 · 4 mins read

Ed eccoci alla seconda "lezione" sulla shell Bash (per chi fosse interessato, questa è la prima parte)..

Uno script è una sequenza di comandi che verrà eseguita su richiesta oppure automaticamente, per crearne uno avete bisogno semplicemente di un editor di testo, che sia nano o vi o vim o gedit (o qualsiasi altro) non importa. Uno script può essere richiamato semplicemente inserendo il suo "nome" nella shell, o può essere eseguito automaticamente dal sistema secondo le nostre impostazioni (molte operazioni all'avvio sono infatti degli script eseguiti in automatico).

Vediamo un piccolo esempio:

#!/bin/bash

clearè

echo "Questo è il tuo primo script"

echo "Benvenuto $USER"
è

Provate questo piccolo script e vedrete il risultato. ;)

Molto semplicemente, questo script visualizza le due stringhe indicate da echo, dopo aver ripulito la console (con il comando clear). $USER è la variabile di ambiente che contiene il nome utente con cui siamo loggati al momento. Focalizziamo la nostra attenzione sulla prima riga: #!/bin/bash.

Questo serve a "dire" al sistema quale shell stiamo usando, ovviamente a patto che questa sia localizzata in /bin. E' chiaro quindi che ogni script deve iniziare con questa riga!!

Può essere poi utile inserire dei commenti nel nostro script, i quali non saranno visualizzati, ma potrebbero sempre tornare utili nel caso in cui riprendiamo il codice dopo mesi dalla sua creazione. Lo script visto prima diventa semplicemente:

#!/bin/bash
è
# Pulisco lo schermo

clear

# Stampo le seguenti due righe

echo "Questo è il tuo primo script"
è
echo "Benvenuto $USER" # $USER contiene il nome utente
èè
                       # con cui siamo loggati

Abbiamo parlato di variabili, dobbiamo dire che queste sono sempre indicate da lettere tutte maiuscole, e sono di due tipi:

  • globali, ovvero disponibili per tutte le shell, visualizzabili col comando printenv;
  • locali, ovvero disponibili solo per la shell al momento utilizzata, visualizzabili col comando set (che attenzione visualizza anche le funzioni attualmente in memoria).

Ovviamente, locali o globali che siano, le variabili hanno anche un tipo, ovvero possono essere stringhe, numeri, array, e ovviamente possono anche essere dichiarate come costanti. In genere, la convenzione usata nella dichiarazione di una variabile è semplice:

NOMEVARIABILE="valore"

Attenzione perchè una variabile così dichiarata è disponibile solo nella shell corrente.

Caratteri speciali

è
  • carattere di escape: si tratta semplicemente del carattere \, serve ad indicare di non considerare altri simboli speciali. Ad esempio: echo \$USER non stamperà il valore della variabile di ambiente $USER, ma esattamente la stringa $USER;
  • apici doppi: le famore virgolette (" "), servono a mantenere il valore letterale di un carattere, ad eccezione del $. Ad esempio echo "$USER" stamperà il nome dell'utente connesso;
  • apici singoli: ovvero 'VARIABILE'. In questo caso si conserva il valore letterale dei caratteri, riprendendo l'esempio precedente echo '$USER' stamperà a video proprio la stringa $USER

Attenzione alla combinazione di questi caratteri speciali, si potrebbero ottenere effetti del tutto imprevisti!!

In uno script di shell possono ovviamente essere usati operatori aritmetici e logici, si tratta di quelli classici, comuni a molti linguaggi di programmazione. Ne trovate una esauriente lista a questo link.

Alias

Concludiamo questo articolo con due comandi molto importanti e molto usati per semplificare la vita del programmatore: alias e unalias. A cosa servono?? Semplice, un alias è una parola che "sostituisce" altre, ad esempio, il comando ls -al riporta l'elenco di tutti i file presenti nella directory corrente, compresi i file nascosti, in una visualizzazione verticale con molte informazioni aggiuntive.

Ora, il comando:

alias lsa='ls -al'

Non fa altro che consentirci di usare il comando lsa invece di ls -al. Scrivendo semplicemente alias nella console, verrà restituita la lista degli alias correnti. Possiamo infine eliminare un alias col comando unalias, nell'esempio precedente:

unalias lsa

Alla prossima..