déjà dans les tests utilise if [ xxx == yyy ] 2 fois égale !!
tu peux tester une boucle while infini si tu souhaites absolument une valeur ; autrement tu fais un test juste après le while sur la même ligne à la place du ':'
while :
do
zone des tests
si test OK then break # tu sors de la boucle après le donne
done
plutôt que de faire des if successifs il est plus élégant d'utiliser case
case $variable in
var1 )
xxxxx
xxxxx
;; # les 2 points virgule sont obligatoires
var )
xxxxxx
xxxxxx
;;
*) # autres valeurs
xxxxx
xxxxxx
esac
mais avant tout je te conseille quelques lectures car autrement il nous faudrait t'écrire ton script et tu n'apprendrais que peu.
Guide du débutant bash
NB : le système ( cat - grep ) fonctionne très bien et je viens de refaire des tests ; s'il ne fonctionne pas c'est certainement dû à ton algorithme.