Come ogni linguaggio di programmazione anche la shell ha delle strutture di controllo, la cui logica e sintassi è simile a quelle comuni in altri linguaggi come il C.
IF THEN ELIF ELSE
if
cmd1 - Se l'ultimo comando in cmd1 è terminato con successo
then
cmd2 - I comandi cmd2 vengono eseguiti
elif
cmd3 - Altrimenti se l'ultimo comando in cmd3 è terminato con successo
then
cmd4 - Vengono eseguiti i cmd4
else
cmd5 - Altrimenti, se ne cmd1 ne cmd3 sono soddisfatti, vengono eseguiti i cmd5
fi
FOR IN DO DONE
for
cmds - Cmds viene eseguito tante volte quanti sono
[in
a b c...] - i valori in a b c. Ad ogni ciclo il valore di vars cambia
do
- a seconda del corrispettivo valore a b c....
cmds
done
WHILE DO DONE
while
cmds1 - Esegue cmd1 e se i comandi terminano con valore logico vero
do
cmds2 - Esegue cmd2 fino a quando cmd1 termina con valore logico falso
done
UNTIL DO DONE
until
cmd1 - Esegue cmd1 e se i comandi terminano con valore logico falso
do
cmd2 - Esegue cmd2 fino a quando cmd1 termina con valore logico vero
done
CASE IN ESAC
case
vars in
- Viene effettuato un confronto tra vars
match1) list1 ;; - e le match1.. finchè non trova il
match2) list2 ;; - corrispettivo valore
match3) list3 ;;
...
esac
L'ambiente shell e lo scripting: variabili d'ambiente, cicli, strutture base.