Chaine de caracteres, affectation de variable

Résolu/Fermé
WLCasey Messages postés 5 Date d'inscription mercredi 28 avril 2010 Statut Membre Dernière intervention 30 avril 2010 - 28 avril 2010 à 16:20
WLCasey Messages postés 5 Date d'inscription mercredi 28 avril 2010 Statut Membre Dernière intervention 30 avril 2010 - 29 avril 2010 à 10:56
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
28 avril 2010 à 16:32
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 avril 2010 à 16:34
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 mercredi 28 avril 2010 Statut Membre Dernière intervention 30 avril 2010
28 avril 2010 à 16:37
pas de souci ;)
0
[Dal] Messages postés 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
Modifié par [Dal] le 28/04/2010 à 16:44
@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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 avril 2010 à 16:48
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 6174 Date d'inscription mercredi 15 septembre 2004 Statut Contributeur Dernière intervention 2 février 2024 1 083
28 avril 2010 à 17:11
Trop fort, à ce niveau, c'est de l'art :-)
0
WLCasey Messages postés 5 Date d'inscription mercredi 28 avril 2010 Statut Membre Dernière intervention 30 avril 2010
28 avril 2010 à 17:18
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 jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
28 avril 2010 à 17:21
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 mercredi 28 avril 2010 Statut Membre Dernière intervention 30 avril 2010
29 avril 2010 à 10:56
Vraiment parfait ! Merci jipicy.
0