Erreur SED dans un script Shell

Fermé
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 26 juin 2009 à 11:37
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 - 26 juin 2009 à 15:16
Bonjour,
tout d'abord la portion de mon script en rapport avec mes erreurs :
#connexion et exportation la liste 
sql.sh -t 10 -H $DHOST -d $DNAME -u $DUSER -p $DPWD -c "${CMDSQL}" -o "${OUTFILESQL}" -l $LOGSQL

#Traitement du fichier ${OUTFILESQL}
sed "/^/{s/.*/INSERT IGNORE INTO matable1 (activ,mail) VALUES (1,'&');\n\INSERT INTO matable2 (id,tid) VALUES(LAST_INSERT_ID(),507);/}" ${EXPORTFILE} > ${IMPORTFILE}

sed -e '1i\BEGIN;' ${IMPORTFILE} > ${INSERTFILE}

#Connexion SFTP sur serveur
sftp nomserveur <<EOF
put ${INSERTFILE}
quit
EOF

#Connexion SSH et insert en base 
ssh nomserveur <<EOF
mysql --user="$USER" --password="$PASS" $BASE} < ${INSERTFILE} 2>> ${LOGINSERTSQL} || echo "Echec de connexion a la BD du ${DATE}"  > ${LOG}
exit
EOF


et voila les erreur que j'ai a l'execution du script :
+ sed '/^/{s/.*/INSERT IGNORE INTO matable1 (activ,mail) VALUES (1,'\''&'\'');\n\INSERT INTO matable2 (id,tid) VALUES(LAST_INSERT_ID(),507);/}' /monrepertoire/monfichier.sql
sed: -e expression #1, char 162: Unknown option to 's'
+ sed -e '1i\BEGIN;'  /monrepertoire/monfichier.sql
sed: -e expression #1, char 4: Extra characters after command


Une idée?

Merci
A voir également:

5 réponses

jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 juin 2009 à 11:52
Salut,


Pour la 1ère erreur, j'ai l'impression qu'il y a soucis avec les quotes, et qu'il n'arrive pas à délimiter la fin de ton expression. L'expression entière contient 138 caractères, et l'erreur se situe au 162 ème caractère, ce qui me fait dire que les quotes sont à l'origine du problème...

Essaie d'écrire la même expression sans les quotes, du style :
sed '/^/{s/.*/INSERT IGNORE INTO matable1 (activ,mail) VALUES (1,blabla);\n\INSERT INTO matable2 (id,tid) VALUES(LAST_INSERT_ID(),507);/}' /monrepertoire/monfichier.sql
et voir si ça passe...


Pour la 2nd, essaie comme ça :
sed -e '1i\
BEGIN;'  /monrepertoire/monfichier.sql

0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
26 juin 2009 à 12:58
Merci jipicy.

Cela a résolu une erreur mais pas la premiere. Voici l'erreur :

+ sed '/^/{s/.*/INSERT IGNORE INTO matable1 (activ,mail) VALUES (1,&);\n\INSERT INTO matable2 (id,tid) VALUES(LAST_INSERT_ID(),507);/}' /monrepertoire/monfichier.sql
sed: -e expression #1, char 160: Unknown option to 's'


Ce qui est curieux c'est que si je créais en test un script shell uniquement avec cette ligne de commande cela fonctionne parfaitement . Juste pour le détail dans mon script j'ai des doubles cotes :

sed "/^/{s/.*/INSERT IGNORE INTO matable1 (activ,mail) VALUES (1,&);\n\INSERT INTO matable2 (id,tid) VALUES(LAST_INSERT_ID(),507);/}"


Peux être une piste?
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 juin 2009 à 13:57
Arf ;-((

VALUES (1,&);VALUES (1,&);
Il faut protéger l'éperluette sans quoi elle est interprétée par "sed" et remplacer par tout ce qui matche ".*" dans le motif ;-(((
VALUES (1,\&);VALUES (1,&);
0
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
26 juin 2009 à 14:34
Toujours pareil erreur même en protégeant l'eperluette :

sed: -e expression #1, char 161: Unknown option to 's'

Merci
0
jipicy Messages postés 40842 Date d'inscription jeudi 28 août 2003 Statut Modérateur Dernière intervention 10 août 2020 4 895
26 juin 2009 à 14:49
Tu peux me faire passer ton fichier "sql" (en MP si nécessaire) que je vois ce qu'il en est en live ;-))
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
pcsystemd Messages postés 691 Date d'inscription dimanche 27 novembre 2005 Statut Membre Dernière intervention 15 janvier 2024 22
26 juin 2009 à 15:16
C'est fait jipicy je t'ai mis en MP le contenu de mon fichier sql que SED doit traité ainsi que mon script shell en entier comme cela tu as tout.

Merci
0