[BASH] Diviser une variable en plusieurs variables

Résolu
Bonjour !

Je coince sur un problème en bash.

J'ai une variable $FRUIT (je simplifie, je ne m'amuse pas avec des fruits hein) qui contient une chaîne de caractère de la forme :

echo $FRUIT
"fraise""pomme""raisin""poire"


Je souhaiterai à partir de cette variable avoir autant de variables que de FRUIT.
Sachant que le nombre de fruits est variable lui aussi...

Toujours dans cet exemple j'aimerai donc qu'il en découle 5 variables correspondant à :

echo $fruit1
"fraise"
echo $fruit2
"pomme"
echo $fruit3
"raisin"
echo $fruit4
"poire"


MERCI d'avance si vous pouvez m'aider :)

2 réponses

  1. Contributeur
    Salut,

    Utilise un tableau :

    $ fruit=(fraise pomme raisin poire)

    $ echo ${fruit[0]}
    fraise

    $ echo ${fruit[1]}
    pomme

    $ echo ${fruit[2]}
    raisin

    $ echo ${fruit[3]}
    poire

    $ echo ${#fruit[*]}
    4

    1. Le nombre de fruit est variable et je ne connais pas leur nom.
      Je ne peux donc pas prévoir un tel tableau.
      1. Contributeur
        Et elle sort d'où cette variable ?
      2. Cette variable est rempli par des noms qui peuvent contenir des espaces. Chaque nom est entre guillemets. J'ai besoin que chacun des noms entre guillemets soient envoyés dans une variable différente.
      3. Contributeur
        $ var='"fraise" "pomme" "raisin" "poire"'

        $ echo ${var}
        "fraise" "pomme" "raisin" "poire"

        $ fruit=(${var})

        $ echo ${#fruit[*]}
        4

        $ echo ${fruit[1]}
        "pomme"

        $ echo ${fruit[2]}
        "raisin"

        $ echo ${fruit[3]}
        "poire"

        $ echo ${fruit[0]}
        "fraise"
      4. Merci. Ca me donne 1 comme résultat.
        Mais je pense que c'est parce que je n'ai pas d'espace entre mes noms. Je vais tester en ajoutant des espaces avec sed.
      5. $ echo ${#fruit[*]}
        ne me donne pas le bon résultat :S
        Je ne m'en sors pas lol

        Merci de m'aider :)