Alors voila je débute tout juste en shell et j'ai du mal à comprendre les conditions combiné avec "while"
Voici un exemple:
while [[ 0 -le $nbr ]]
do
read -p "indiquez un chiffre / nombre:" nbr
done
echo "le chiffre/nombre ecrit est $nbr"
En résumé je souhaite que l'utilisateur puisse saisir un chiffre / nombre et que tant qu'il n'a pas écrit une valeur correcte je lui repose la même question
Merci par avance pour votre aide
- Edité par MasseminFrancis 19 juillet 2019 à 15:35:28
Tant que 0 est plus petit ou égal à ta variable $nbr tu vas demander une saisie en console, une fois le nombre inférieur ou égal à $nbr, tu affiches le nombre
PS: -le = Lower or Equal = Plus petit ou Egal
Un bonjour, un s'il te plaît (stp accepté) et un merci ne font pas de mal
Pour info, je sais pas si tu avais mis une variable avant d'effectuer le code que tu as transmis, mais essaye d'initialiser un nombre à $nbr quand même avant ton while, juste que ça soit "plus propre"
- Edité par Andrøll 19 juillet 2019 à 16:27:37
Un bonjour, un s'il te plaît (stp accepté) et un merci ne font pas de mal
le signe > est un opérateur lexical (il compare du texte, et les nombres en tant que texte). c'est également une redirection, peut-être as-tu créé un fichier avec comme nom un nombre...
$ until read -p 'entrez un nombre : ' nbr && test "$nbr" -ge 0; do :; done
entrez un nombre : abc
bash: test: abc : nombre entier attendu comme expression
entrez un nombre : 0
$
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Effectivement, avec le test ça fonctionne mieux merci :D J'en profite également pour une autre question : je souhaite récupérer dans une variable 1 ou plusieurs fichiers Dans cette configuration, je ne peux que récupérer un seul fichier.
while [[ ! -f "$files" ]]
do
read -p 'indiquez le/les nom(s) des fichiers (ex: *.log): ' files
done
En effet si l'utilisateur écrit par exemple "*.txt" le read me reposera la question
Comment puis-je faire pour prendre en compte les * ?
- Edité par MasseminFrancis 22 juillet 2019 à 11:46:15
les tests ne considèrent qu'une seule entité. tu pourrais passer par un tableau, et tester le nombre de ses éléments :
#!/bin/bash
shopt -s nullglob
until (( ${#ar[*]} ))
do
read -p 'indiquez... : ' fic
ar=( $fic )
done
- Edité par dantonq 22 juillet 2019 à 14:39:44
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Aide condition Shell
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Un bonjour, un s'il te plaît (stp accepté) et un merci ne font pas de mal
Un bonjour, un s'il te plaît (stp accepté) et un merci ne font pas de mal
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique
Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique