Menu

[BASH] Diviser une variable en plusieurs variables [Résolu/Fermé]

Messages postés
32
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
18 août 2015
-
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 :)
Afficher la suite 

2 réponses

Messages postés
36564
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
18 juin 2019
3611
0
Merci
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

Messages postés
32
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
18 août 2015
1
0
Merci
Le nombre de fruit est variable et je ne connais pas leur nom.
Je ne peux donc pas prévoir un tel tableau.
Nimajneb
Messages postés
32
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
18 août 2015
1 -
Ou alors avec un read !?
Nimajneb
Messages postés
32
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
18 août 2015
1 -
Oui mais il faudrait faire uen boucle avec un read vu qu'on ne connaît pas le nombre de réponse...
zipe31
Messages postés
36564
Date d'inscription
dimanche 7 novembre 2010
Statut
Contributeur
Dernière intervention
18 juin 2019
3611 -
Un second traitement les fait ressortir comme ca :
"fraise" "pomme rouge" "raisin" "poire williams"
Y'a pas moyen d'obtenir un élément par ligne ?
"fraise" 
"pomme rouge"
"raisin"
"poire williams"

Voilà un exemple :

$ echo "${var2}"
"fraise" "pomme rouge" "raisin" "poire williams"

$ echo -e "${var2//\" \"/\"\n\"}"
"fraise"
"pomme rouge"
"raisin"
"poire williams"

$ mapfile -t fruit < <(echo -e "${var2//\" \"/\"\n\"}")

$ echo "${#fruit[@]}"
4

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

$ echo "${fruit[0]}"
"fraise"

$ echo "${fruit[3]}"
"poire williams"
Utilisateur anonyme -
salut,

tu dis : la variable est une suite de variable issue de parsing de résultat de commande
àmha, il serait préférable de ne pas prolonger l'utilisation de cette variable, mais de la reconstruire en utilisant un séparateur quelconque, plutôt qu'une bête concaténation.
Nimajneb
Messages postés
32
Date d'inscription
mercredi 21 février 2007
Statut
Membre
Dernière intervention
18 août 2015
1 -
Merci zipe31 c'est impec' !!