Forum Programmation.shell Redirection au sein d'une boucle

Posté par  .
Étiquettes : aucune
0
24
juil.
2006
Bonjour,

Je veux régulièrement travailler avec des boucles for,. Malheureusement je suis souvent limité par l'impossibilité dans laquelle je me trouve d'utiliser des redirections au sein des boucles for.

Par exemple, sous Gentoo je viens de récupérer les ebuilds de la beta de Xfce4.4.
Ces ebuild sont ~x86 et je suis en ~amd64. Je me dis donc que je vais, à l'aide d'un sed de derrière les fagots, modifier d'un coup d'un seul ces nombreux ebuilds.

Las, las, la redirection ne fonctionne pas :-(

voila la commande :

/tmp/ebuilds contient le chemin complet de tous les ebuilds à modifier.

for i in `cat /tmp/ebuilds `; do
cat $i | sed s/x86/amd64/g ›$i_ && mv $i_ $i ;
done;

Connaissez-vous le moyen d'utiliser une redirection dans une boucle ?

Vous remerciant par avance pour votre aide
  • # Non

    Posté par  (site web personnel) . Évalué à 4.

    Je vois pas trop, mais tu te fais chier pour rien :p
    fait sed -ie "s/x86/amd64/g" $i et basta :p
    (ou $i puis l'expression? je suis plus sur)
  • # curieux

    Posté par  . Évalué à 4.

    Chez moi ca marche ©
    Bon c'est pas super constructif mais bon...

    mais bon déja un cat de trop :P
    ensuite toujours des "" autour des variables et "${i}" c'est encore mieux

    for i in $( cat /tmp/ebuilds)
    do
    sed -e "s/x86/amd64/g;w plop" "$i" && mv plop "$i"
    done

    éviterai de fair partie ce ceux qui utilisent cat pour rien
    et tu éviterais d'utiliser les redirections qui foirent chez toi.

    ps : le $( ) fait comme un `` mais tellement plus pratique a imbriquer

    pps c'est du bash

    ppps pour faire marcher ton script :
    i_=plop
    au début... car $i_ je ne suis pas sur que ca existe
    $>a=1
    $>echo $a_

    alors que
    $>a=1
    $>echo ${a}_
    1_
    donc toujours les {} :P ( sauf pour moi )

    Il ne faut pas décorner les boeufs avant d'avoir semé le vent

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.