Chaine de caracteres, affectation de variable
Résolu
WLCasey
Messages postés
4
Date d'inscription
Statut
Membre
Dernière intervention
-
WLCasey Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
WLCasey Messages postés 4 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
Dans un petit script bash que je mets au point, j'obtiens une variable qui liste mes disques durs.
C'est bêtement une chaîne de caractères qui contient :
hda hdb sda
Ma question est la suivante : comment couper cette chaîne de caractères pour obtenir 3 variables distinctes contenant le nom de chaque disque ?
Je suppose que c'est tout bête, mais par exemple cut ou awk me posent des difficultés et de tout façon d'après ce que j'ai compris ils n'affectent pas de variables. J'ai essayé pas mal de trucs, les tableau par ex., mais je n'y arrive pas. En lisant un grand nombre de man pages j'ai fini par me noyer !
Help !! Merci d'avance.
Dans un petit script bash que je mets au point, j'obtiens une variable qui liste mes disques durs.
C'est bêtement une chaîne de caractères qui contient :
hda hdb sda
Ma question est la suivante : comment couper cette chaîne de caractères pour obtenir 3 variables distinctes contenant le nom de chaque disque ?
Je suppose que c'est tout bête, mais par exemple cut ou awk me posent des difficultés et de tout façon d'après ce que j'ai compris ils n'affectent pas de variables. J'ai essayé pas mal de trucs, les tableau par ex., mais je n'y arrive pas. En lisant un grand nombre de man pages j'ai fini par me noyer !
Help !! Merci d'avance.
3 réponses
-
Salut,
Tu peux essayer quelque chose comme cela :
#!/bin/bash DISQUES="hda hdb sda" for disque in $DISQUES do echo $disque done
-
-
-
@WLCasey : j'ai un peu interprété ta question, car j'ai supposé que ton script ne pouvait pas savoir à l'avance combien de disques il devait y avoir. J'espère que la réponse t'es utile
@jipicy : très bien, tu as l'air en forme aussi ! Cela fait plaisir d'être toujours aussi chaleureusement accueilli :-) -
Pour la peine :
jp@jp-kermic:~/trash/rep$ DISQUES="hda hdb sda" jp@jp-kermic:~/trash/rep$ echo ${DISQUES} hda hdb sda jp@jp-kermic:~/trash/rep$ DISQUES=( ${DISQUES} ) jp@jp-kermic:~/trash/rep$ echo ${#DISQUES[*]} 3 jp@jp-kermic:~/trash/rep$ echo ${DISQUES[0]} hda jp@jp-kermic:~/trash/rep$ echo ${DISQUES[1]} hdb jp@jp-kermic:~/trash/rep$ echo ${DISQUES[2]} sda jp@jp-kermic:~/trash/rep$
;-)) -
-
-
ok, merci beaucoup. Effectivement le script n'est pas sensé savoir combien de disques il va y avoir dans la variable. Ou combien de caractères contigus entrecoupés d'espace.
Ce qui m'est proposé me semble pas mal du tout.
Peux-tu juste me dire ce que la commande DISQUES=( ${DISQUES} )
fait exactement. Parce que c'est celle-là qui semble régler mon problème. Ce serait bête de copier sans réellement comprendre.
Encore merci -
Vraiment parfait ! Merci jipicy.