Je suis débutant en shell et j'utilise le shell rc.
J'ai un paquet de répertoire (59) qui contiènnent un Makefile chacun.
af-aspell/Makefile
az-aspell/Makefile
..
Dans chacun de ces Makefile, je veux changer une valeur par une autre
qui se trouve dans un fichier
./aspell/files/verdict
head -2 ../aspell/files/verdict
VERDICT_AF= -af-0.50-0
VERDICT_AZ= 6-az-0.02-0
Donc, en pratique, je veux changer, par exemple
DISTFILES= aspell${VERDICT_AZ}${EXTRACT_SUFX}
dans az-aspell/Makefile pour
DISTFILES= aspell-6-az-0.02-0${EXTRACT_SUFX}
Ca ne fonctionne pas, car j'ai un problème à la dernière ligne, celle
où j'utilise sed.
(Je met un backslash devant les # car mon MUA n'aime pas les lignes
qui commencent par ce charactère).
\#!/usr/local/bin/rc
DIR=`{find . -type d |grep -v CVS| sed 's/.\///g' }
for ( i in $DIR) {
DICO_SUFFIX=`{echo $i |sed 's/-aspell//g' | tr "a-z" "A-Z"}
VERDICT_DICO='${VERDICT_'^$DICO_SUFFIX^'}'
DICO_VERSION=`{grep $VERDICT_DICO ../aspell/files/verdict |awk '{print $2}'}
\# C'est ici que ça se gâte.
sed -i '' -e 's/$VERDICT_DICO/$DICO_VERSION/g' $i/Makefile
}
Je ne sais pas comment dire à sed que ce que je veux qu'il prenne en compte
c'est le contenue de la variable et non son nom.
J'ai essayé avec ' ' " " et même sans rien du tout autour de la commande
de substitution et je n'ai pas trouvé.
Bon, alors si quelqu'un peut m'éclairer, ça me ferait vraiment très plaisir.
Merci.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Laurent Wacrenier
Serge Gagnon écrit:
Dans chacun de ces Makefile, je veux changer une valeur par une autre qui se trouve dans un fichier ./aspell/files/verdict head -2 ../aspell/files/verdict VERDICT_AF= -af-0.50-0 VERDICT_AZ= 6-az-0.02-0
Donc, en pratique, je veux changer, par exemple DISTFILES= aspell${VERDICT_AZ}${EXTRACT_SUFX} dans az-aspell/Makefile pour DISTFILES= aspell-6-az-0.02-0${EXTRACT_SUFX}
Pourquoi ne pas dire à Makefile de charger "verdict" ? (la façon dépend de la version de "make")
Au pire, cat verdict Makefile > Makefile.new puis make -f Makefile.new
Serge Gagnon <ser_gagnon@sympatico.ca> écrit:
Dans chacun de ces Makefile, je veux changer une valeur par une autre
qui se trouve dans un fichier
./aspell/files/verdict
head -2 ../aspell/files/verdict
VERDICT_AF= -af-0.50-0
VERDICT_AZ= 6-az-0.02-0
Donc, en pratique, je veux changer, par exemple
DISTFILES= aspell${VERDICT_AZ}${EXTRACT_SUFX}
dans az-aspell/Makefile pour
DISTFILES= aspell-6-az-0.02-0${EXTRACT_SUFX}
Pourquoi ne pas dire à Makefile de charger "verdict" ?
(la façon dépend de la version de "make")
Au pire,
cat verdict Makefile > Makefile.new
puis
make -f Makefile.new
Dans chacun de ces Makefile, je veux changer une valeur par une autre qui se trouve dans un fichier ./aspell/files/verdict head -2 ../aspell/files/verdict VERDICT_AF= -af-0.50-0 VERDICT_AZ= 6-az-0.02-0
Donc, en pratique, je veux changer, par exemple DISTFILES= aspell${VERDICT_AZ}${EXTRACT_SUFX} dans az-aspell/Makefile pour DISTFILES= aspell-6-az-0.02-0${EXTRACT_SUFX}
Pourquoi ne pas dire à Makefile de charger "verdict" ? (la façon dépend de la version de "make")
Au pire, cat verdict Makefile > Makefile.new puis make -f Makefile.new
Serge Gagnon
On Mon, 8 Nov 2004, "Laurent" == Laurent Wacrenier wrote:
Laurent> Serge Gagnon écrit:
+> Dans chacun de ces Makefile, je veux changer une valeur par une +> autre qui se trouve dans un fichier ./aspell/files/verdict head +> -2 ../aspell/files/verdict VERDICT_AF= -af-0.50-0 VERDICT_AZ +> 6-az-0.02-0
+> Donc, en pratique, je veux changer, par exemple DISTFILES +> aspell${VERDICT_AZ}${EXTRACT_SUFX} dans az-aspell/Makefile pour +> DISTFILES= aspell-6-az-0.02-0${EXTRACT_SUFX}
Laurent> Pourquoi ne pas dire à Makefile de charger "verdict" ? (la Laurent> façon dépend de la version de "make")
Oui et non. :) La version actuelle charge le verdict:
C'est que après, il a été décidé que les version retournait dans les Makefile et quittait le fichier verdict. Bon, ensuite, il a été décidé que ça restait comme ça, mais, pour moi, la question restait quant à l'utilisation de sed dans le script rc.
Merci -- Serge Gagnon Quebec, Qc, Canada
On Mon, 8 Nov 2004, "Laurent" == Laurent Wacrenier wrote:
+> Dans chacun de ces Makefile, je veux changer une valeur par une
+> autre qui se trouve dans un fichier ./aspell/files/verdict head
+> -2 ../aspell/files/verdict VERDICT_AF= -af-0.50-0 VERDICT_AZ +> 6-az-0.02-0
+> Donc, en pratique, je veux changer, par exemple DISTFILES +> aspell${VERDICT_AZ}${EXTRACT_SUFX} dans az-aspell/Makefile pour
+> DISTFILES= aspell-6-az-0.02-0${EXTRACT_SUFX}
Laurent> Pourquoi ne pas dire à Makefile de charger "verdict" ? (la
Laurent> façon dépend de la version de "make")
Oui et non. :) La version actuelle charge le verdict:
C'est que après, il a été décidé que les version retournait dans les
Makefile et quittait le fichier verdict. Bon, ensuite, il a été décidé
que ça restait comme ça, mais, pour moi, la question restait quant à
l'utilisation de sed dans le script rc.
On Mon, 8 Nov 2004, "Laurent" == Laurent Wacrenier wrote:
Laurent> Serge Gagnon écrit:
+> Dans chacun de ces Makefile, je veux changer une valeur par une +> autre qui se trouve dans un fichier ./aspell/files/verdict head +> -2 ../aspell/files/verdict VERDICT_AF= -af-0.50-0 VERDICT_AZ +> 6-az-0.02-0
+> Donc, en pratique, je veux changer, par exemple DISTFILES +> aspell${VERDICT_AZ}${EXTRACT_SUFX} dans az-aspell/Makefile pour +> DISTFILES= aspell-6-az-0.02-0${EXTRACT_SUFX}
Laurent> Pourquoi ne pas dire à Makefile de charger "verdict" ? (la Laurent> façon dépend de la version de "make")
Oui et non. :) La version actuelle charge le verdict:
C'est que après, il a été décidé que les version retournait dans les Makefile et quittait le fichier verdict. Bon, ensuite, il a été décidé que ça restait comme ça, mais, pour moi, la question restait quant à l'utilisation de sed dans le script rc.
Merci -- Serge Gagnon Quebec, Qc, Canada
Thierry Thomas
Lundi 08 novembre 2004 à 17:20 GMT, Serge Gagnon a écrit :
Bonjour,
Salut Serge,
Je suis débutant en shell et j'utilise le shell rc.
Le problème, c'est que tu utilises des trucs que personne ne connaît... Pour nous autres, plan9 et le shell rc, c'est comme du québécois : on a l'impression de comprendre, mais on ne sait pas le parler ;-)
Passe donc à sh ou zsh, et là on saura la différence entre une simple ' et une double ". -- Th. Thomas.
Lundi 08 novembre 2004 à 17:20 GMT, Serge Gagnon a écrit :
Bonjour,
Salut Serge,
Je suis débutant en shell et j'utilise le shell rc.
Le problème, c'est que tu utilises des trucs que personne ne connaît...
Pour nous autres, plan9 et le shell rc, c'est comme du québécois : on a
l'impression de comprendre, mais on ne sait pas le parler ;-)
Passe donc à sh ou zsh, et là on saura la différence entre une simple '
et une double ".
--
Th. Thomas.
Lundi 08 novembre 2004 à 17:20 GMT, Serge Gagnon a écrit :
Bonjour,
Salut Serge,
Je suis débutant en shell et j'utilise le shell rc.
Le problème, c'est que tu utilises des trucs que personne ne connaît... Pour nous autres, plan9 et le shell rc, c'est comme du québécois : on a l'impression de comprendre, mais on ne sait pas le parler ;-)
Passe donc à sh ou zsh, et là on saura la différence entre une simple ' et une double ". -- Th. Thomas.
Serge Gagnon
On Wed, 10 Nov 2004, "Thierry" == Thierry Thomas wrote:
Thierry> Lundi 08 novembre 2004 à 17:20 GMT, Serge Gagnon a écrit :
+> Bonjour,
Thierry> Salut Serge,
+> Je suis débutant en shell et j'utilise le shell rc.
Thierry> Le problème, c'est que tu utilises des trucs que personne ne Thierry> connaît... Pour nous autres, plan9 et le shell rc, c'est comme Thierry> du québécois : on a l'impression de comprendre, mais on ne sait Thierry> pas le parler ;-)
Thierry> Passe donc à sh ou zsh, et là on saura la différence entre une Thierry> simple ' et une double ".
Non, le problème c'est que _MOI_ je ne connais pas rc ;-) , mais il y a des types ici que je sais qu'ils conaissent ce shell sauf qu'on ne les entend pas. Tiens, par example, je sais que Stephane Chazelas le connait un peu, mais je serais trop gêné de le dire et de lui demander de répondre publiquement à la question initial de ce fil.
-- Serge Gagnon Quebec, Qc, Canada
On Wed, 10 Nov 2004, "Thierry" == Thierry Thomas wrote:
Thierry> Lundi 08 novembre 2004 à 17:20 GMT, Serge Gagnon a écrit :
+> Bonjour,
Thierry> Salut Serge,
+> Je suis débutant en shell et j'utilise le shell rc.
Thierry> Le problème, c'est que tu utilises des trucs que personne ne
Thierry> connaît... Pour nous autres, plan9 et le shell rc, c'est comme
Thierry> du québécois : on a l'impression de comprendre, mais on ne sait
Thierry> pas le parler ;-)
Thierry> Passe donc à sh ou zsh, et là on saura la différence entre une
Thierry> simple ' et une double ".
Non, le problème c'est que _MOI_ je ne connais pas rc ;-) , mais il y a
des types ici que je sais qu'ils conaissent ce shell sauf qu'on ne les
entend pas. Tiens, par example, je sais que Stephane Chazelas le connait
un peu, mais je serais trop gêné de le dire et de lui demander de
répondre publiquement à la question initial de ce fil.
On Wed, 10 Nov 2004, "Thierry" == Thierry Thomas wrote:
Thierry> Lundi 08 novembre 2004 à 17:20 GMT, Serge Gagnon a écrit :
+> Bonjour,
Thierry> Salut Serge,
+> Je suis débutant en shell et j'utilise le shell rc.
Thierry> Le problème, c'est que tu utilises des trucs que personne ne Thierry> connaît... Pour nous autres, plan9 et le shell rc, c'est comme Thierry> du québécois : on a l'impression de comprendre, mais on ne sait Thierry> pas le parler ;-)
Thierry> Passe donc à sh ou zsh, et là on saura la différence entre une Thierry> simple ' et une double ".
Non, le problème c'est que _MOI_ je ne connais pas rc ;-) , mais il y a des types ici que je sais qu'ils conaissent ce shell sauf qu'on ne les entend pas. Tiens, par example, je sais que Stephane Chazelas le connait un peu, mais je serais trop gêné de le dire et de lui demander de répondre publiquement à la question initial de ce fil.
-- Serge Gagnon Quebec, Qc, Canada
Stephane Chazelas
2004-11-08, 17:20(+00), Serge Gagnon: [...]
DIR=`{find . -type d |grep -v CVS| sed 's/.///g' }
# C'est ici que ça se gâte. sed -i '' -e 's/$VERDICT_DICO/$DICO_VERSION/g' $i/Makefile
sed -i '' -e s/$VERDICT_DICO/$DICO_VERSION/g $i/Makefile
}
Je ne sais pas comment dire à sed que ce que je veux qu'il prenne en compte c'est le contenue de la variable et non son nom.
Utiliser eval
J'ai essayé avec ' ' " " et même sans rien du tout autour de la commande de substitution et je n'ai pas trouvé.
Il n'y a pas d'autres quotes que « ' » en rc
Bon, alors si quelqu'un peut m'éclairer, ça me ferait vraiment très plaisir. [...]
Comme d'autres l'ont deja dit, pratiquement personne ne connait rc. C'est dommage car c'est un bien meilleur shell que les shells Bourne, mais les habitudes ont la vie dure.
En zsh, ca s'ecrirait:
for d (**/*-aspell~*CVS*(N/)) { var=VERDICT_${${d:t}%-aspell} val=${(P)var} ver=$(awk "/$val/ {print $2; exit}" ../aspell/files/verdict) sed -i '' -e s/$val/$ver/g $d/Makefile }
-- Stephane
2004-11-08, 17:20(+00), Serge Gagnon:
[...]
DIR=`{find . -type d |grep -v CVS| sed 's/.///g' }
# C'est ici que ça se gâte.
sed -i '' -e 's/$VERDICT_DICO/$DICO_VERSION/g' $i/Makefile
sed -i '' -e s/$VERDICT_DICO/$DICO_VERSION/g $i/Makefile
}
Je ne sais pas comment dire à sed que ce que je veux qu'il prenne en compte
c'est le contenue de la variable et non son nom.
Utiliser eval
J'ai essayé avec ' ' " " et même sans rien du tout autour de la commande
de substitution et je n'ai pas trouvé.
Il n'y a pas d'autres quotes que « ' » en rc
Bon, alors si quelqu'un peut m'éclairer, ça me ferait vraiment très plaisir.
[...]
Comme d'autres l'ont deja dit, pratiquement personne ne connait
rc. C'est dommage car c'est un bien meilleur shell que les
shells Bourne, mais les habitudes ont la vie dure.
En zsh, ca s'ecrirait:
for d (**/*-aspell~*CVS*(N/)) {
var=VERDICT_${${d:t}%-aspell}
val=${(P)var}
ver=$(awk "/$val/ {print $2; exit}" ../aspell/files/verdict)
sed -i '' -e s/$val/$ver/g $d/Makefile
}
# C'est ici que ça se gâte. sed -i '' -e 's/$VERDICT_DICO/$DICO_VERSION/g' $i/Makefile
sed -i '' -e s/$VERDICT_DICO/$DICO_VERSION/g $i/Makefile
}
Je ne sais pas comment dire à sed que ce que je veux qu'il prenne en compte c'est le contenue de la variable et non son nom.
Utiliser eval
J'ai essayé avec ' ' " " et même sans rien du tout autour de la commande de substitution et je n'ai pas trouvé.
Il n'y a pas d'autres quotes que « ' » en rc
Bon, alors si quelqu'un peut m'éclairer, ça me ferait vraiment très plaisir. [...]
Comme d'autres l'ont deja dit, pratiquement personne ne connait rc. C'est dommage car c'est un bien meilleur shell que les shells Bourne, mais les habitudes ont la vie dure.
En zsh, ca s'ecrirait:
for d (**/*-aspell~*CVS*(N/)) { var=VERDICT_${${d:t}%-aspell} val=${(P)var} ver=$(awk "/$val/ {print $2; exit}" ../aspell/files/verdict) sed -i '' -e s/$val/$ver/g $d/Makefile }
Ben ça fonctionne pas ici. J'ai un ' syntax error near '=' ' chez-moi.
Stephane> Comme d'autres l'ont deja dit, pratiquement personne ne Stephane> connait rc. C'est dommage car c'est un bien meilleur shell que Stephane> les shells Bourne, mais les habitudes ont la vie dure.
Ah, je savais bien que j'avais fait un bon choix de shell ;) me reste juste à lire les man pages plus en profondeur.
Merci :)
-- Serge Gagnon Quebec, Qc, Canada
On Thu, 11 Nov 2004, "Stephane" == Stephane Chazelas wrote:
Ben ça fonctionne pas ici. J'ai un ' syntax error near '=' ' chez-moi.
Stephane> Comme d'autres l'ont deja dit, pratiquement personne ne
Stephane> connait rc. C'est dommage car c'est un bien meilleur shell que
Stephane> les shells Bourne, mais les habitudes ont la vie dure.
Ah, je savais bien que j'avais fait un bon choix de shell ;)
me reste juste à lire les man pages plus en profondeur.
Ben ça fonctionne pas ici. J'ai un ' syntax error near '=' ' chez-moi.
Stephane> Comme d'autres l'ont deja dit, pratiquement personne ne Stephane> connait rc. C'est dommage car c'est un bien meilleur shell que Stephane> les shells Bourne, mais les habitudes ont la vie dure.
Ah, je savais bien que j'avais fait un bon choix de shell ;) me reste juste à lire les man pages plus en profondeur.
Merci :)
-- Serge Gagnon Quebec, Qc, Canada
Stephane Chazelas
2004-11-11, 13:42(+00), Serge Gagnon:
On Thu, 11 Nov 2004, "Stephane" == Stephane Chazelas wrote:
Ben ça fonctionne pas ici. J'ai un ' syntax error near '=' ' chez-moi.
Euh oui, desolé, j'avais pas testé.
eval 'VERDICT_DICO = $VERDICT_'^$DICO_SUFFIX
Stephane> Comme d'autres l'ont deja dit, pratiquement personne ne Stephane> connait rc. C'est dommage car c'est un bien meilleur shell que Stephane> les shells Bourne, mais les habitudes ont la vie dure.
Ah, je savais bien que j'avais fait un bon choix de shell ;) [...]
Pas si tu veux avoir de l'aide dans les news ou partager ton code par exemple.
-- Stephane
2004-11-11, 13:42(+00), Serge Gagnon:
On Thu, 11 Nov 2004, "Stephane" == Stephane Chazelas wrote:
Ben ça fonctionne pas ici. J'ai un ' syntax error near '=' ' chez-moi.
Euh oui, desolé, j'avais pas testé.
eval 'VERDICT_DICO = $VERDICT_'^$DICO_SUFFIX
Stephane> Comme d'autres l'ont deja dit, pratiquement personne ne
Stephane> connait rc. C'est dommage car c'est un bien meilleur shell que
Stephane> les shells Bourne, mais les habitudes ont la vie dure.
Ah, je savais bien que j'avais fait un bon choix de shell ;)
[...]
Pas si tu veux avoir de l'aide dans les news ou partager ton
code par exemple.
Ben ça fonctionne pas ici. J'ai un ' syntax error near '=' ' chez-moi.
Euh oui, desolé, j'avais pas testé.
eval 'VERDICT_DICO = $VERDICT_'^$DICO_SUFFIX
Stephane> Comme d'autres l'ont deja dit, pratiquement personne ne Stephane> connait rc. C'est dommage car c'est un bien meilleur shell que Stephane> les shells Bourne, mais les habitudes ont la vie dure.
Ah, je savais bien que j'avais fait un bon choix de shell ;) [...]
Pas si tu veux avoir de l'aide dans les news ou partager ton code par exemple.