Syntaxe :
until commande1
	do
	     commande2
	     ...
	done
A l'inverse de while, la commande until exécute les commandes situées entre le do et le done tant que la commande située à droite du until retourne un code faux.
Exemple :
Le script suivant boucle tant que le nombre saisi n'est pas égal à 53
$ nl boucleUntil01.sh
	     1  #!/bin/bash
	     2  nbr=0
	     3  until ((nbr==53))
	     4  do
	     5          echo -e "Saisir 53 : \c"
	     6          read nbr
	     7  done
	     8  exit 0
	$ ./boucleUntil01.sh
	Saisir 53 : 45
	Saisir 53 : rt
	Saisir 53 : fd
	Saisir 53 : 53
	$
Le script suivant permet, en tâche de fond, de surveiller un répertoire donné et d'informer l'utilisateur de l'arrivée d'un fichier attendu dans ce répertoire.
	Pour plus de sécurité sur l'intégrité du fichier attendu, un fichier témoin devra être créé à la suite du fichier attendu puisque le principal contrôle se fera sur l'existence de ce fichier.
$ nl boucleUntil02.sh
	     1    #!/bin/bash
	     2    # Il doit y avoir au minimum 2 paramètres en arguments et un maximum de 3
	     3    if [[ $# -lt 2 || $# -gt 3 ]]
	     4    then
	     5        echo "Utilisation : $0 repertoire fichier [ temoin ]"
	     6        exit 1
	     7    fi
	     8    # Le premier argument doit être un répertoire
	     9    if [[ ! -d $1 ]]
	    10    then
	    11        echo "$1 n'est pas un répertoire"
	    12        exit 2
	    13    fi
	    14    # Nom du fichier témoin par défaut
	    15    ficTemoin=${3:-temoin}
	    16    # Exécution de la boucle en attendant l'arrivée du fichier témoin avec une pause toutes les 3 secondes
	    17    until [[ -e $1/$ficTemoin ]]
	    18    do
	    19        sleep 3
	    20    done
	    21    # Vérification que le fichier attendu est bien présent
	    22    if [[ ! -e $1/$2 ]]
	    23    then
	    24        echo "Le fichier témoin existe mais le fichier attendu est absent"
	    25        exit 3
	    26    fi
	    27    # Sauvegarde du fichier attendu dans le HOME de l'utilisateur avec horodatage et suppression du fichier témoin
	    28    date=$(date '+%Y%m%d_%H%M')
	    29    newFichier=$2.$date
	    30    mv $1/$2 $HOME/$newFichier
	    31    rm $1/$ficTemoin
	    32    # Envoi d'un mail à l'utilisateur
	    33    mail $LOGNAME <<FIN
	    34    Le fichier $HOME/$newFichier est bien arrivé.
	    35    FIN
	    36    echo "$0 : Vous avez reçu un message !!! "
	    37    exit 0
	$ ./boucleUntil02.sh /tmp monFichier &     # Lancement du script en arrière plan grâce à la commande &
	[1] 2298
	$ touch /tmp/monFichier                                   # Création du fichier attendu
	$ touch /tmp/temoin                                           # Création du fichier témoin
	$ ./boucleUntil02.sh : Vous avez reçu un message !!!     # Message généré par la ligne 36
	 
	[1]+  Done                    ./boucleUntil02.sh /tmp monFichier
	$
il ne reste plus qu'à consulter sa boite mail pour lire le message envoyé par le script.