Boucler tant que $var n'est pas un chiffre compris entre 0-3

Bonjour,

J’ai un peu de mal sur un script. J’aimerais qu’il boucle tant qu’une variable n’est pas compris entre 0 et 3 par exemple, et que si ont tape autre chose (zzz (ou vide) par exemple) cela boucle.

J’ai commencé comme ça :

while [ -z $nuq ] && [ $(( ${nbusers}+1 )) -le ${nuq} ] do read -p "Utilisateur (1 à ${nbusers}) ? \n" nuq done

Seulement cela ne fonctionne pas vraiment :frowning:

bonjour,

nbusers=3
while (( nuq < 1 || nuq > nbusers ))
do
  read -p "Utilisateur (1 à ${nbusers}) ? " nuq
done

Ok, oué, c’est pas si compliqué que ça. J’ai fait ça à ma sauce :smiley:

elif [ ${q} = "2" ] then clear ## Choix utilisateur echo -e "Lister l'espace disque d'un utilisateur\n" nbusers=$(cat /etc/passwd | grep mdpu | cut -d : -f 1 | wc -l) i=1 while [ ${i} -ne $(( ${nbusers}+1 )) ] do usersl=$(cat /etc/passwd | grep mdpu | cut -d : -f 1 | sed -n "${i}"p) Tuser[${i}]=${usersl} userc=${Tuser[${i}]} echo -e "${i} ${userc}" i=$((${i}+1)) done nuq=0 ######################################################################################################## while [ ${nuq} -ne -1 ] ; [ ${nuq} -eq 0 ] || [ $(( ${nbusers}+1 )) -le ${nuq} ] do read -p "Utilisateur (1 à ${nbusers}) ? " nuq if [ ${nuq} = 'q' ] || [ ${nuq} = 'Q' ] then nuq=-1 q=0 else vnuq=$(echo ${nuq} | grep '[0-9]') if [ $? -ne 0 ] then nuq=0 else usercs=${Tuser[${nuq}]} repquota /mdpu | grep ${usercs} fi fi done ########################################################################################################

Mais bon, cela fonctionne :smiley:

Sinon, pour indiquer entre un et trois:

[1-3]

@Kharec : certe mais dans notre cas “3” n’est qu’un exemple et ta solution ne fonctionnera qu’avec des chiffres et non tous les entiers naturels. Ce qui peut être le cas du nombre d’utilisateurs :wink:

@Flamme 2 : Tu es bon pour un golden awards of UUOC :041 :038 :text-lol:

(ce pas le prendre mal : cf mes 2 interventions dans ce fil)

[quote=“Totor”]@Flamme 2 : Tu es bon pour un golden awards of UUOC :041 :038 :text-lol:

(ce pas le prendre mal : cf mes 2 interventions dans ce fil)[/quote]
Si tu veut te lancer ça pourrait être sympa de créer une page pour les bonnes pratiques en scripting shell (uuoc, astuces de certaines commandes, éventuellement awk à la place de grep + cut, etc). Ça fait quelques temps que j’en ai l’idée mais pas trop le temps pour m’y mettre.

j’y ai pensé plus d’une fois…
il y a quelque temps, j’ai même eu l’envie d’écrire un livre sous forme de fascicule / pense bête
mais je n’ai jamais trouvé le courage :blush: