Estructura for
Sintaxi:
for variable in llista_de_valors
do
comandaments
done
Normalment la llista de valors és el resultat de l'execució d'algún comandament. Per exemple:
for i in `who | sed 's/ .*//'` do echo $i echo ================ done
La instrucció who filtrada per sed retorna els noms dels usuaris connectats, que es pren com a llista de valors per la variable d'entorn. El bucle escriu els noms dels usuaris connectats separats per una línia de signes "=".
Estructura if
Sintaxi:
if [ condició ]; then comandaments else comandaments fi
La condició ha d'anar entre claudàtors [ ] i separat d'ells per espais en blanc. Podem utilitzar els següents operadors lògics:
| operador lògic | significat |
| -ne | diferent de |
| -gt | mès gran que (>) |
| -ge | mès gran o igual que (>=) |
| -lt | mès petit que (<) |
| -le | mès petit o igual que (<=) |
| -eq | igual (=) |
Exemple:
if [ $* -ne 3 ]; then echo 1>&2 calen 3 parametres exit 127 fi
Estructura While
Sintaxi:
while [ condició ]; do comandaments done
Exemple: el següent script accepta un número indeterminat de noms de directoris com a paràmetres i llista el contingut de tots ells:
#mostra el contingut dels directoris especificats
while [ $# -ge 1 ]; do ls $1 shift #elimina parametre actual done
Estructura Case
Sintaxi:
case valor in
conjunt1)
comandaments1
;;
conjunt2)
comandaments2
;;
(...)
*)
comandaments
;;
esac
Exemple:
#calcula els anys de diferencia entre el paràmetre i l'any 1980
#el parametre pot estar en format aa o bé aaaa
#
case "$1" in
0[0-9])
ANY=20${1}
;;
200[0-9])
ANY=$1
;;
[8-9][0-9])
ANY=19${1}
;;
19[8-9][0-9])
ANY=$1
;;
*)
echo 1>&2 any fora de rang
exit 127
;;
esac
ANYS=`expr $ANY - 1980`
echo han passat $ANYS des de 1980