Erreur SED dans un script Shell
pcsystemd
Messages postés
734
Statut
Membre
-
pcsystemd Messages postés 734 Statut Membre -
pcsystemd Messages postés 734 Statut Membre -
Bonjour,
tout d'abord la portion de mon script en rapport avec mes erreurs :
et voila les erreur que j'ai a l'execution du script :
Une idée?
Merci
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
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
--
L'accès au savoir est la première liberté que chaque homme devrait avoir.
Configuration: Linux Mozilla 1.9.0.7
5 réponses
-
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.sqlet voir si ça passe...
Pour la 2nd, essaie comme ça :sed -e '1i\ BEGIN;' /monrepertoire/monfichier.sql
-
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? -
Toujours pareil erreur même en protégeant l'eperluette :
sed: -e expression #1, char 161: Unknown option to 's'
Merci -
Tu peux me faire passer ton fichier "sql" (en MP si nécessaire) que je vois ce qu'il en est en live ;-))
-
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question -
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