Comment grep une chaîne jusqu'à la boucle en bash?

Je travaille sur un script de compression de fichiers. Je veux faire un "jusqu'à ce que la boucle" jusqu'à ce que " le contenu de la variable correspond au modèle. Le script utilise zenity. C'est la partie importante:

part="0"
pattern="^([0-9]{1}[0-9]*([km])$"
until `grep -E "$pattern" "$part"` ; do
    part=$(zenity --entry \
    --title="Zip the file" \
    --text "Choose the size of divided parts:
(0 = no division, *m = *mb, *k = *kb)" \
    --entry-text "0");

    if grep -E "$pattern" "$part" ; then
        zenity --warning --text "Wrong text entry, try again." --no-cancel;
    fi
done

Je veux qu'il accepte chaîne de caractères contenant des chiffres terminant par 'k' ou 'm' (mais pas deux) et n'acceptez pas de chaîne qui commence avec '0'.

Est le modèle ok?

Attendre, c'est la question de savoir si le motif est ok? Ou avez-vous des problèmes avec le script en entier? Si vous vous souciez seulement de la répétition, vous pouvez grandement simplifier la question, en supprimant les non-parties importantes.

OriginalL'auteur Nojas | 2013-05-02