Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2668 connectés 

  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [shell] transformer un string en array...

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[shell] transformer un string en array...

n°342160
duch
Posté le 20-10-2003 à 18:28:18  profilanswer
 

et oui c'est encore, et oui c'est encore une question toute con.
 
j'ai cherché mais j'ai pas trouvé...
 
comment transformer une chaine du genre "1,2,3,4,5" en tableau?
 
j'ai essayé avec awk et perl sans succès
 
perl :  
 

Code :
  1. r=`perl -e 'split(/,/, "1,2,3,4,5" )'`


 
ne renvoie rien :(
 
et awk :
 

Code :
  1. r=`echo "1,2,3,4,5,6" | awk '{split($1,a,"," ); for (i=1; i<=10; i++) print a[i]}'`


 
et là ça renvoie 1 2 3 4 5 6
 
 
même si mon awk c'est un peu portnawak, le perl devrait marcher au moins, non?


Message édité par duch le 20-10-2003 à 18:30:20
mood
Publicité
Posté le 20-10-2003 à 18:28:18  profilanswer
 

n°342163
becket
Posté le 20-10-2003 à 18:33:02  profilanswer
 


Il me semble que bash ne sais pas le faire, mais bien csh et tcsh

n°342165
duch
Posté le 20-10-2003 à 18:35:04  profilanswer
 

ah oups, pour une fois, j'ai pas fait de boulette alors
 
[mode question stupide]
c'est quoi la différence entre bash, csh et tcsh?
[mode question stupide]

n°342208
old
Posté le 20-10-2003 à 19:06:58  profilanswer
 
n°342220
old
Posté le 20-10-2003 à 19:20:44  profilanswer
 
n°342222
old
Posté le 20-10-2003 à 19:25:04  profilanswer
 

test ok
 
#!/bin/sh
 
t[0]=coucou
t[1]=ok
 
echo ${t[1]}
 
>>>>>>>>   ok  

n°342228
old
Posté le 20-10-2003 à 19:42:09  profilanswer
 

encore plus simple  
 
r=(12 15 38 5 127 99)
 
echo ${r[2])  
 
les tableaux sont possibles avec bash

n°342466
duch
Posté le 21-10-2003 à 10:33:28  profilanswer
 

petit détail :
 
le tableau est passé en paramètres dans l'appel du script...
 
aucune des solutions que tu donnes ne fonctionne old, désolé :(

n°342473
duch
Posté le 21-10-2003 à 10:58:08  profilanswer
 

remarque si je fais un truc dans le genre :
 
appel du script :
 
./monscript "1 2 3 4 5 6"
 
 
en utilisant un truc du genre eval dans le script y'a un moyen?

n°342477
arsunik
ma tuxitude me beastifie
Posté le 21-10-2003 à 11:10:02  profilanswer
 

Code :
  1. a="1 2 3 4 5"
  2. eval t=\($a\)
  3. echo $t[2]


 
edit : si tu faisais tout ton script en perl, ça serait surement beaucoup plus simple ;)


Message édité par arsunik le 21-10-2003 à 11:11:05
mood
Publicité
Posté le 21-10-2003 à 11:10:02  profilanswer
 

n°342564
bobuse
Posté le 21-10-2003 à 13:51:22  profilanswer
 

duch a écrit :

petit détail :
 
le tableau est passé en paramètres dans l'appel du script...
 
aucune des solutions que tu donnes ne fonctionne old, désolé :(


ben du genre :
 

#!/bin/sh
 
nb=$#
 
i=1
while [ $# -ge 1 ]; do
  truc[${i}]=$1
  i=`expr $i + 1`
  shift
done
 
for i in `seq $nb`; do
  echo "$i : ${truc[$i]}"
done


 

$ tmp/test.sh 54 21
1 : 54
2 : 21


 
c'est un peu du vite-fait, mais si ca peut t'aider :/


Message édité par bobuse le 21-10-2003 à 13:54:51
n°342637
duch
Posté le 21-10-2003 à 17:27:45  profilanswer
 

ah bah oui mais je ne passe pas que ces paramètres là à l'appel du script.
 
mais au final c'est ce que j'ai fait, une boucle sur tous les paramètres à partir du 4ème (dans mon cas).
 
le blème c'est que je ne peux pas mettre d'autres paramètres ensuite.

n°342640
bobuse
Posté le 21-10-2003 à 17:45:34  profilanswer
 

ben sinon, tu mets des options pour delimiter tout ca du genre :
./test.sh --liste 1 2 3 4 ... --autre_option
quand tu as le paramètre '--liste' tu lis les trucs, et puis dès que tu as une nouvelle option, tu la reconnais avec le '--'

n°342643
j_c_p
Linux user
Posté le 21-10-2003 à 17:55:33  profilanswer
 

Pourquoi ne pas garder le string :love:, c'est pas joli ?
 
 
-> je sors ....  :D  :D  :D

n°342645
duch
Posté le 21-10-2003 à 18:00:40  profilanswer
 

yes why not.
 
l'option de bobuse me semble bonne.
 
M'enfin pour l'instant j'ai réussi à me demmerder comme ça :D
 
 
pendant que je suis là, quelqu'un sait comment écrire une ligne après une ligne particulière d'un fichier?
 
je voudrais pouvoir ajouté une ligne après la ligne 79 d'un fichier par exemple et pas à la fin (ça je sais faire avec >> ).
 
Notez que j'ai trouvé le numéro de la ligne grâce à un grep.
 
Avec vi ça doit être possible, mais c'est bourrin


Message édité par duch le 21-10-2003 à 18:03:36
n°342653
duch
Posté le 21-10-2003 à 18:35:44  profilanswer
 

ah bah j'ai trouvé :D
 
bourrin :
 

Code :
  1. ed monfichier << EOF
  2. 79
  3. +
  4. i
  5. hello world
  6. .
  7. w
  8. q
  9. EOF


Message édité par duch le 21-10-2003 à 18:35:56

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Linux et OS Alternatifs
  Codes et scripts

  [shell] transformer un string en array...

 

Sujets relatifs
[shell][awk] récupérer la valeur max d'une sortie?[shell] coment utiliser une variable dans un bloc << EOF ??
[ Shell/Bash ] Quelques commandes pour lancer une appli[linux] problème script shell : exit status
[dialog] comment ajuster la taille des widgets au shell?inverser une chaine de caracteres en shell
script shell sous linux[Javanns ou snns] ligne de commande shell.
Transformer un PC sous Windows en terminal Xmandarine: Les fortunes de Sam dans votre shell en couleur
Plus de sujets relatifs à : [shell] transformer un string en array...


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)