• [^] # Re: modifie l'initialisation

    Posté par . En réponse au message Passer de paramètres à valeurs saisie par l'utilisateur... Évalué à 6.

    Au lieu de d'initialiser nb manuellement
    initialise le avec le premier nombre de ta liste saisie par l'utilisateur.

    Quelle est ta manière simple de récupérer juste le premier élément malgré bash (je dis « malgré », parce que bash, c’est comme Perl en moins puissant mais plus compliqué, même s’il est bien moins indigent que le Bourne shell dont il descend) ?

    Parce que je vois l’affectation de toute la liste aux variables 1,ドル 2ドル... avec

    set -- $var

    (intérêt supplémentaire : on peut ensuite reprendre le script prévu pour traiter les arguments), l’affectation de toute la liste à un tableau avec

    $tab=($var)

    (ensuite ${tab[2]} pour accéder par exemple au troisième élément, $tab donnant le premier élément), mais récupérer juste le premier élément, je ne vois pas trop...

    À la réflexion, on peut récupérer juste le premier élément avec

    ${var%% *}

    Un peu cryptique quand même pour un débutant (enfin c’est du bash...) ; explication : c’est une substitution qui rend le contenu de la variable allégé du premier espace et de tout ce qui suit.

    De plus il manque une instruction dans ta structure de contrôle.

    Effectivement.
    Par contre, il y a aussi des instructions superflues : nb=$nb, on peut aussi sortir le shift du if then else fi dans le premier script et supprimer le else dans la foulée.

    Tant qu’on y est, on peut utiliser && plutôt que if then fi et le contenu de la boucle while (du premier script) se réduit à :

    do
     [ 1ドル -lt $nb ] && nb=1ドル
     shift
    done

    « Le fascisme c’est la gangrène, à Washington comme en Russie. » — adapté de Renaud, Hexagone