Rechercher : dans
Par :

Expect howto

Dernière réponse le 13 jan 2009 à 12:04:17 tlep, le 13 jan 2009 à 11:27:51 
 Signaler ce message aux modérateurs

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 :-)

Configuration: Windows XP
Firefox 3.0.3

1

jipicy, le 13 jan 2009 à 11:39:41

Salut,

Voir ce thread ;-))
$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

2

tlep, le 13 jan 2009 à 11:51:13

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)


:-((

Répondre à tlep

3

jipicy, le 13 jan 2009 à 12:01:02

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/

$ man woman
Il n'y a pas de page de manuel pour woman.

Répondre à jipicy

4

 tlep, le 13 jan 2009 à 12:04:17

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 ;-)

Répondre à tlep