Partage
  • Partager sur Facebook
  • Partager sur Twitter

Aide condition Shell

    19 juillet 2019 à 15:17:02

    Bonjour à tous

    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

    • Partager sur Facebook
    • Partager sur Twitter
      19 juillet 2019 à 16:05:41

      Hello,

      Le bout de code que tu as fourni fait ceci :

      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

      • Partager sur Facebook
      • Partager sur Twitter

      Un bonjour, un s'il te plaît (stp accepté) et un merci ne font pas de mal

        19 juillet 2019 à 16:21:59

        Ah oui merci pour ton éclaircissement !

        J'ai inversé et j'ai donc indiqué -ge cependant il prend en compte tout les chiffres/nombres mais toujours pas le 0 :(

        edit: en faite j'ai trouvé ^^ juste avec le signe >

        -
        Edité par MasseminFrancis 19 juillet 2019 à 16:26:44

        • Partager sur Facebook
        • Partager sur Twitter
          19 juillet 2019 à 16:26:59

          Pas de soucis

          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

          • Partager sur Facebook
          • Partager sur Twitter

          Un bonjour, un s'il te plaît (stp accepté) et un merci ne font pas de mal

            19 juillet 2019 à 17:00:36

            salut,

            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
            $





            • Partager sur Facebook
            • Partager sur Twitter

            Validez la réponse utile « Un problème clairement exposé est à moitié résolu. » Pas de MP technique

              22 juillet 2019 à 11:45:06

              Hello,



              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

              • Partager sur Facebook
              • Partager sur Twitter
                22 juillet 2019 à 14:38:48

                nouvelle question -> nouveau sujet.

                merci.

                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

                • Partager sur Facebook
                • Partager sur Twitter

                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.
                • Editeur
                • Markdown