Εντολές ελέγχου

Ο φλοιός δέχεται ακόμα τις παρακάτω δομές ελέγχου:
for name [ in word; ] do list ; done
Εκτέλεση των εντολών της list για όλες τις λέξεις θέτοντας κάθε φορά τη μεταβλητή name στην ανάλογη τιμή.

Παράδειγμα:

for fname in *.c
do
	ls -l $fname
	cat $fname
done
case word in [ pattern [ | pattern ] ... ) list ;; ] ... esac
Εκτέλεση των εντολών της list για κάθε word που ταιριάζει με το αντίστοιχο pattern.

Παράδειγμα:

case $fname in
	*.c|*.for)	echo Source file ; cat *.c ;;
	*.o)		echo Object file ;;
	*)		echo Other file ;;
esac
if list_c1 then list_r1 [ elif list_c2 then list_r2 ] ... [ else list_r3 ] fi
Εκτέλεση των εντολών της list_r1 αν η εντολή list_c1 είναι αληθής, αλλιώς εκτέλεση της εντολής list_r2 αν η εντολή list_c2 είναι αληθής ... αλλιώς εκτέλεση της εντολής list_r3.

Παράδειγμα:

if grep John /etc/passwd
then
	echo John is a valid user
else
	echo No user named John was found
fi
while list1 do list2 done
Εκτέλεση των εντολών της list2 όσο είναι επιτυχής η εκτέλεση της εντολής list1

Παράδειγμα:

while ! {finger | grep John ; }
do
	sleep 10
done
echo John  left