Programmation.shell : shell (bash) et C
Posté par abdoulfatahou () le 10 mai 2007
Bonjour co-Linuxien,
j'ai fait un script qui est sensé redirige du code C sur un fichier, malheureusement ca ne marche pas tres bien pour les guillemets des "printf'
la ligne:
echo printf\(\"erreur de calcul pour l'appel $fonction\($params\)\"\)\;>>./TestCoutEtalageSaisonnier.c
semble poser probleme, j'ai l'erreur suivante:
$ ./genprog valeurTest.txt
./genprog: line 23: unexpected EOF while looking for matching `''
./genprog: line 30: syntax error: unexpected end of file
Est ce que quelqu'un a la solution a mon probleme?
Merci de vos reponses
--------------------------------------------------------------------------------
le code:
#scripts linux: genere un programme de test a partir de valeurs prensentent sur fichier *.txt
echo \#include\<stdio.h\> >./TestCoutEtalageSaisonnier.c
cpt=0
for val in $(grep ":" ./$1)
do
cpt=$(expr $cpt + 1)
if [ $cpt -eq 1 ]
then
fonction=$(echo $val | cut -d ":" -f 2)
lib=$(echo $val | cut -d ":" -f 3)
echo \#include\"$lib\">>./TestCoutEtalageSaisonnier.c
echo int main\(void\)>>./TestCoutEtalageSaisonnier.c
echo {>>./TestCoutEtalageSaisonnier.c
else
params=$(echo $val | cut -d ":" -f 1)
res=$(echo $val | cut -d ":" -f 2)
echo if\($fonction\($params\)!=$res\)>>./TestCoutEtalageSaisonnier.c
echo printf\(\"erreur de calcul pour l'appel $fonction\($params\)\"\)\;>>./TestCoutEtalageSaisonnier.c
fi
done
echo return 0\;>>./TestCoutEtalageSaisonnier.c
echo }>>./TestCoutEtalageSaisonnier.c
j'ai fait un script qui est sensé redirige du code C sur un fichier, malheureusement ca ne marche pas tres bien pour les guillemets des "printf'
la ligne:
echo printf\(\"erreur de calcul pour l'appel $fonction\($params\)\"\)\;>>./TestCoutEtalageSaisonnier.c
semble poser probleme, j'ai l'erreur suivante:
$ ./genprog valeurTest.txt
./genprog: line 23: unexpected EOF while looking for matching `''
./genprog: line 30: syntax error: unexpected end of file
Est ce que quelqu'un a la solution a mon probleme?
Merci de vos reponses
--------------------------------------------------------------------------------
le code:
#scripts linux: genere un programme de test a partir de valeurs prensentent sur fichier *.txt
echo \#include\<stdio.h\> >./TestCoutEtalageSaisonnier.c
cpt=0
for val in $(grep ":" ./$1)
do
cpt=$(expr $cpt + 1)
if [ $cpt -eq 1 ]
then
fonction=$(echo $val | cut -d ":" -f 2)
lib=$(echo $val | cut -d ":" -f 3)
echo \#include\"$lib\">>./TestCoutEtalageSaisonnier.c
echo int main\(void\)>>./TestCoutEtalageSaisonnier.c
echo {>>./TestCoutEtalageSaisonnier.c
else
params=$(echo $val | cut -d ":" -f 1)
res=$(echo $val | cut -d ":" -f 2)
echo if\($fonction\($params\)!=$res\)>>./TestCoutEtalageSaisonnier.c
echo printf\(\"erreur de calcul pour l'appel $fonction\($params\)\"\)\;>>./TestCoutEtalageSaisonnier.c
fi
done
echo return 0\;>>./TestCoutEtalageSaisonnier.c
echo }>>./TestCoutEtalageSaisonnier.c
> Lire le message (9 commentaires, moyenne: 2,1).
Vous avez demandé le commentaire #830998.



C'est comme le monsieur il dit
C'est le _'_ de _l'appel_ qui fait foirer et qu'il faudrait protéger.
Mes 2 cts.
[^]Re: C'est comme le monsieur il dit
"C'est le _'_ de _l'appel_ qui fait foirer et qu'il faudrait protéger."
Desole je n'arrive pas a relire clairement le monsieur :-(
Je suis
7fe1c8ccf7e7fb4e51ba666b259410e026edbde5 et toi?
[^]Re: C'est comme le monsieur il dit
l'appel
_^_
[^]Re: C'est comme le monsieur il dit
Il dit qu'il faut utiliser
echo printf\(\"erreur de calcul pour l\'appel $fonction\($params\)\"\)\;>>./TestCoutEtalageSaisonnier.c
[^]je ne m'appelle pas "syntax error"! :-)
Merci pour la solution les amis.
Je suis
7fe1c8ccf7e7fb4e51ba666b259410e026edbde5 et toi?
[^]Re: je ne m'appelle pas "syntax error"! :-)
j'ai encore mieux: plutôt que echo, quand tu as plusieurs lignes à taper, utilise plutôt cat
VARIABLE=2
cat << EOF > fichier.c
#include <stdio.h>
int main(void)
{
static const int var=$VARIABLE;
printf("Variable = %d\n", var);
return var;
}
EOF
En gros tu dis à cat d'attendre la chaine de caractère "EOF" pour comprendre que c'est la fin du texte à mettre dans le fichier.
[^]Re: je ne m'appelle pas "syntax error"! :-)
ouaip, ça, c'est cool.
Et juste pour faciliter les recherches google ;) , le petit nom en anglais de la technique, c'est le "here script"
[^]je ne m'appelle pas "syntax error"! :-)
Merci pour la solution les amis.
Je suis
7fe1c8ccf7e7fb4e51ba666b259410e026edbde5 et toi?
[^]je ne m'appelle pas "syntax error"! :-)
Merci pour la solution les amis.
Je suis
7fe1c8ccf7e7fb4e51ba666b259410e026edbde5 et toi?