In questo episodio, invece ci occuperemo di controllare il flusso di esecuzione del codice e delle operazioni sui file.
COSA SONO I CONTROLLORI DI FLUSSO
Sono tutte quelle strutture che permettono di deviare il normale percorso di esecuzione, esattamente come l’acqua nei tubi è deviata dal suo percorso da vari elementi come i rubinetti e i .
Questi costrutti sono tre:
- if e if then else
- while
- for
IF E IF THEN ELSE
L’if è il costrutto che permette le decisioni binarie. Provvede alla scelta confrontando due o più variabili. La sua sintassi è:
if [ <var1> <condizione> <var2> ]; then
/*codice da eseguire se a condizione è vera*/
else
/*Codice da eseguire se la condizione è falsa*/
fi
Ora, la sintassi non è difficile. Si deve solo prestare attenzione agli spazi.
Incominciamo dall’inizio. <var1> e <var2> (ah, ovviamente senza diamanti<>) sono le variabili da confrontare.
Il costrutto <condizione> è, in parole povere il modo di confrontare le due variabili. Sono delle sigle che fanno per lo più operazioni logiche. Vediamo le principali:
- -gt : maggiore.
- -lt : minore.
- -ge : maggiore o uguale.
- -le : minore uguale.
- -eq : uguale.
- -ne : diverso.
Ovviamente vi è la possibilità di concatenare varie di queste espressioni grazie a:
- || : or logico.
- && : and logico.
eta=20;
if[ $eta -ge 18 ]; then
echo “Hai più di 18 anni, puoi entrare”
else
echo “Non hai l’età per entrare”
fi
Ovviamente se non abbiamo bisogno del ramo false, terminiamo il ramo true con il costrutto fi.
WHILE
Il while è il responsabile del ciclo. Permette, finchè la condizione è vera, di eseguire il codice all’interno del suo ramo. La sintassi è:
while [ <var1> <condizione> <var2> ];
do
/*Codice da eseguire se la condizione è vera*/
done
Al posto di <condizione> possiamo inserire una delle condizioni logiche che abbiamo incontrato in precedenza.
FOR
La sintassi del for è:
for <variabile> in <range>
do
/*Codice da eseguire*/
done
Questo costrutto è analogo al while, nel senso che permette di eseguire il codice all’interno del suo ramo per tutte le volte specificare nel suo <range>:
Esempio:
for file in /home/utente/Documenti/*
do
echo $file
done
ATTENZIONE
Partiamo con il dire che nello Shell Scripting le variabili non hanno tipo, ossia la Bash, per esempio, somma numeri con numeri e numeri con caratteri, con il conseguente problema di dati non corretti. Sta quindi a noi il compito di inserire le giuste variabili nelle giuste operazioni.
In ogni caso possiamo distinguere due tipi di variabili:
- Quelle che contengono numeri;
- Quelle che contengono caratteri;
Per le seconde valgono i simboli matematici:
- > : maggiore.
- < : minore.
- >= : maggiore o uguale.
- <= : minore uguale.
- == : uguale.
- != : diverso.
LEGGERE L’INPUT DA TASTIERA
Per leggere l’input da tastiera si usa semplicemente il costrutto:
read <variabile>
Dove <variabile> conterrà l’input letto da tastiera fino all’inserimento di un invio.
LAVORARE CON I FILE
Un grande utilizzo degli script è quello di analizzare sistematicamente grandi moli di file. Sfruttando pesantemente ciò che abbiamo detto in precedenza, possiamo fare contenere qualunque cosa alle nostre variabili. Compresi i file. Valgono le seguenti regole:
- -f file : true se il file esiste;
- -s file : true se il file non è vuoto;
- -r file : true se il file è leggibile;
- -w file : true se il file è scrivibile;
- -x file : true se il file è eseguibile;
- -d file : true se il file è una direcory;
- -h file : true se il file è un link simbolico;
for file in /home/utente/*
do
echo $file
if [ -r $file ]; then
echo "Si hanno i permessi di lettura."
fi
if [ -w $file ]; then
echo "Si hanno i permessi di scrittura."
fi
if [ -d $file ]; then
echo "E' una directory."
fi
done
VARIABILI BUILD-IN
Sono delle variabili che sono proprie dello script che stiamo eseguendo. Sono molteplici. Le principali sono:
- $* : Si riferisce a tutti gli argomenti da linea di comando del nostro script. Può dare problemi con gli spazi.
- $@ : Analoga alla precedente ma gestisce correttamente gli spazi.
- $# : Contiene il numero di argomenti da linea di comando dello script.
CONCLUSIONE
Abbiamo visto molte cose oggi. Non ci resta che provarle una a una.
Suggerimento: sfruttate le whild card!
Fateci sapere i risultati. A prossimo post ;)
Link alle puntate precedenti:
- Introduzione alla Shell Bash - Episodio 1
- Variabili e aritmetica della Bash - Episodio 2
- Wild Card. Cosa sono e come si usano - Episodio 3
Fonti:
- Immagini di +Joel Garia;
Nessun commento:
Posta un commento