Expect howto

Résolu
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   -  
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   - 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 :-)

3 réponses

jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
Salut,

Voir ce thread ;-))
0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
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)


:-((
0
jipicy Messages postés 40842 Date d'inscription   Statut Modérateur Dernière intervention   4 896
 
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/

0
tlep Messages postés 596 Date d'inscription   Statut Membre Dernière intervention   118
 
Oui en fait il fallait mettre
spawn svn mkdir --editor-cmd "echo \"$COMMENTAIRE\"" svn://192.168.10.10/mysqlsubversion/trunk/subversion/"$REPERTOIRE"

http://www.gnu.org/ :

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