Posez votre question Signaler

Expect howto [Résolu]

tlep 591Messages postés 21 février 2002Date d'inscription - Dernière réponse le 13 janv. 2009 à 12:04
Bonjour,
je veux exécuter automatiquement des commandes svn (subversion) qui sont par défaut interactives.
Je pense pour celà utiliser expect, mais celui-ci doit recevoir deux arguments que j'ai nommés $1 et $2 comme en shell :
#!/usr/bin/expect -f
set force_conservative 1 ;
set timeout 2
svn mkdir --editor-cmd "echo $1" svn://192.168.10.10/mysqlsubversion/trunk/subversion/$2
expect "a)nnule, c)ontinue, e)dite\r"
send -- "c\r"
~
Le problème est que expect n'est pas capable d'interpréter ces arguemnts.
can't read "1": no such variable
while executing
"svn mkdir --editor-cmd "echo $1" svn://192.168.10.10/mysqlsubversion/trunk/subversion/$2"
Avez-vous une solution ?
Merci :-)
Lire la suite 

Expect howto »

4 réponses
Réponse
+0
moins plus
Salut,

Voir ce thread ;-))
Ajouter un commentaire
Réponse
+0
moins plus
Je venais de le voir merci :-)

j'ai fait comme suit:

#!/usr/bin/expect -f

set COMMENTAIRE [lindex $argv 0]
set REPERTOIRE [lindex $argv 1]

set force_conservative 1 ;
set timeout 5;

spawn svn mkdir --editor-cmd "echo "$COMMENTAIRE"" svn://192.168.10.10/mysqlsubversion/trunk/subversion/"$REPERTOIRE\r"

expect "a)nnule, c)ontinue, e)dite"
send -- "a\r"

exit

Mais j'obtiens cette erreur :

extra characters after close-quote
while executing
"spawn svn mkdir --editor-cmd "echo "$COMMENTAIRE"" svn://192.168.10.10/mysqlsubversion/trunk/subversion/"$REPERTOIRE\r"

expect "a)nnule, c)ontinue, e..."
(file "./testexpect" line 9)


:-((
jipicy - 13 janv. 2009 à 12:01
Apparemment il manque un espace entre les quotes doubles après $COMMENTAIRE et avant svn ;-\
$COMMENTAIRE"" svn://192.168.10.10/
$COMMENTAIRE" "svn://192.168.10.10/

Ajouter un commentaire
Réponse
+0
moins plus
Oui en fait il fallait mettre
spawn svn mkdir --editor-cmd "echo \"$COMMENTAIRE\"" svn://192.168.10.10/mysqlsubversion/trunk/subversion/"$REPERTOIRE"

http://www.delorie.com/gnu/docs/dejagnu/dejagnu_35.html :

Always escape punctuation, such as `(' or `"', in your patterns; for example, write `\('. If you forget to escape punctuation, you will usually see an error message like `extra characters after close-quote'

Merci pour tout ;-)
Ajouter un commentaire
Ce document intitulé « expect howto » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Réduire les coûts d'impression dans l'entreprise