Aller au contenu

Change
Bienvenue sur GeekZone
Inscrivez-vous sur GeekZone pour profiter des fonctions avancées du forum, proposer des news, participer aux conversations, ouvrir votre galerie, profiter de la messagerie interne et venir tester nos modérateurs avec du bon troll... Attention, ils ont la gâchette facile. C’est aussi pour ça que GeekZone est le meilleur site de passionnés depuis 2002 ! Si vous avez déjà un compte, connectez-vous - sinon, il est temps d'en créer un.

KSH: affectation de plusieurs variables en même temps

- - - - -

  • Veuillez vous connecter pour répondre
8 réponses à ce sujet

#1
Rufh

Rufh

    Padawan Geek

  • Membre
  • PipPip
  • 201 messages
Salut à tous,

je me pose une question et je n'arrive pas à trouver la réponse. Donc peut être que quelqu'un ici a la solution.

je cherche en ksh a affecter plusieurs variables simultanément avec le résultat d'une seule commande du style :

echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\1 \2 \3/" | read a b c

Ce que fait cette ligne c'est faire de l'extraction des 3 blocks  de la chaine $chaine. Et puis c'est tout :(
Ce que j'aimerais c'est qu'elle affecte le résultat dans les variables a, b et c.
ca permet d'éviter de taper trois fois la ligne sed pour affecter chaque variables:
a=`echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\1/"`
b=`echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\2/"`
c=`echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\3/"`

Quelqu'un aurait une solution pour affecter les trois variables simultanément avec le résultat d'un seul sed ?
Cela améliorerait les performance du script, qui sont critiques.

Merci de votre aide.

#2
cben76

cben76

    Don't worry - Be happy

  • Membre
  • PipPipPipPipPipPipPip
  • 6138 messages
  • Lieu:Lyon

Voir le messageRufh, le 01 April 2011 - 15:51, dit :

Salut à tous,

je me pose une question et je n'arrive pas à trouver la réponse. Donc peut être que quelqu'un ici a la solution.

je cherche en ksh a affecter plusieurs variables simultanément avec le résultat d'une seule commande du style :

echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\1 \2 \3/" | read a b c

Ce que fait cette ligne c'est faire de l'extraction des 3 blocks  de la chaine $chaine. Et puis c'est tout :(
Ce que j'aimerais c'est qu'elle affecte le résultat dans les variables a, b et c.
ca permet d'éviter de taper trois fois la ligne sed pour affecter chaque variables:
a=`echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\1/"`
b=`echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\2/"`
c=`echo $chaine | sed "s/.......\(block1\).....\(block2\).....\(block3)\.../\3/"`

Quelqu'un aurait une solution pour affecter les trois variables simultanément avec le résultat d'un seul sed ?
Cela améliorerait les performance du script, qui sont critiques.

Merci de votre aide.

Je sais pas si ca peux se faire facilement en ksh. Par contre, un p'tit coup de AWK, et c'est reglé. Tu peux meme l'appeler dans ton script.
Image IPBImage IPB

#3
hawk

hawk

    Little Geek

  • Membre
  • Pip
  • 28 messages
  • Lieu:Lille
Ca ne répond pas exactement à ta question, mais c'est la seule solution que je connaisse : le faire en 2 temps en passant
par un tableau, ça évite au moins de faire x fois les sed


arr=($(echo "XX YY ZZ" | sed 's/\(..\) \(..\) \(..\)/\2 \1 \3/'))
a=${arr[0]}


"Rational arguments don't usually work on religious people. Otherwise, there wouldn't be religious people." House M.D.
Image IPB

#4
fser

fser

    Yoda Geek

  • Membre
  • PipPipPipPipPipPip
  • 2455 messages
Euh, printf?
$ printf "%d %s %s %s" 42 is the answser
42 is the answser

"Et sinon, Jessica elle meurt à la fin."

#5
LordK

LordK

    Senseï Geek

  • Membre
  • PipPipPipPipPip
  • 1712 messages
  • Lieu:Paris

Voir le messagecben76, le 01 April 2011 - 16:13, dit :

Je sais pas si ca peux se faire facilement en ksh. Par contre, un p'tit coup de AWK, et c'est reglé. Tu peux meme l'appeler dans ton script.

Image IPB

Ahah.
Never let your sense of morals get in the way of doing what's right, Isaac. A. - Philo... so geek ! - Les Ardoises - Google Profile

#6
cben76

cben76

    Don't worry - Be happy

  • Membre
  • PipPipPipPipPipPipPip
  • 6138 messages
  • Lieu:Lyon

Voir le messageLordK, le 02 April 2011 - 21:15, dit :

Image IPB

Ahah.

Tres bon :)
Image IPBImage IPB

#7
AnA-l

AnA-l

    Monde de merde !

  • Membre
  • PipPipPipPipPipPipPip
  • 7347 messages
  • Lieu:Rbx
Haha putain, il m'a fallu 3min pour piger, EXCELLENT :D

#8
hawk

hawk

    Little Geek

  • Membre
  • Pip
  • 28 messages
  • Lieu:Lille
ah oui tiens, pas fait gaffe  :teehee:
Mais sinon, ça aide ou bien ?
"Rational arguments don't usually work on religious people. Otherwise, there wouldn't be religious people." House M.D.
Image IPB

#9
Rufh

Rufh

    Padawan Geek

  • Membre
  • PipPip
  • 201 messages
Ok merci pour la réponse.

Par contre si tu peux coller ta commande en awk ça pourra toujours me servir un jour.

Merci.




0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)