Chaine de caracteres, affectation de variable

Résolu
WLCasey Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
WLCasey Messages postés 5 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.

A voir également:

3 réponses

[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Salut,

Tu peux essayer quelque chose comme cela :

#!/bin/bash

DISQUES="hda hdb sda"

for disque in $DISQUES
do
  echo $disque
done

2
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Wouaw, un revenant...

Salut Dal, tu vas bien ?
Heureux de te revoir dans le coin ;-))

PS. @WLCasey : Désolé pour l'incruste, et toutes mes excuses ;-)
0
WLCasey Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
pas de souci ;)
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
@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 :-)
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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$


;-))
0
[Dal] Messages postés 6205 Date d'inscription   Statut Contributeur Dernière intervention   1 105
 
Trop fort, à ce niveau, c'est de l'art :-)
0
WLCasey Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Elle initialise le tableau DISQUES en se servant de la valeur de la variable ${DISQUES}.

Syntaxe pour dour déclarer un tableau :
MON_TABLEAU=( item1 item2 item3 )
0
WLCasey Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
Vraiment parfait ! Merci jipicy.
0