Cet article explique les options de ligne de commande qui peuvent être passées à un script expect.
Si vous ne connaissez pas encore le langage de script, commencez par notre exemple expect hello world.
1. Exécutez le script expect à partir de la ligne de commande en utilisant l'option -c
expect vous permet également de l'exécuter directement dans la ligne de commande en utilisant l'option -c comme indiqué ci-dessous.
$ expect -c 'expect "\n" {send "pressed enter\n"} pressed enter $
Une fois que vous avez exécuté le script ci-dessus, il attend la nouvelle ligne (\n) et en appuyant sur la touche Entrée, il imprimera le message "entrée enfoncée" et sortira.
2. Exécutez le script expect de manière interactive à l'aide de l'option -i
Le script Expect peut s'exécuter de manière interactive en lisant les commandes à partir de l'entrée standard à l'aide de l'option -i, comme indiqué ci-dessous.
$ expect -i arg1 arg2 arg3 expect1.1>set argv arg1 arg2 arg3 expect1.2>
Normalement, lorsque vous exécutez la commande expect ci-dessus sans l'option -i, elle traite arg1 comme un nom de fichier de script, de sorte que l'option -i rend la liste d'arguments ininterrompue.
Cette option est utile lorsque vous exécutez le script expect avec l'indicateur -c. Parce que par défaut, expect s'exécute de manière interactive.
3. Afficher les messages de débogage lors de l'exécution du script expect
Vous pouvez activer l'impression des messages de diagnostic lorsque vous exécutez le code avec l'option -d comme indiqué ci-dessous.
$ cat sample.exp # !/usr/bin/expect -f expect "\n"; send "pressed enter"; $ expect -d sample.exp expect version 5.43.0 argv[0] = expect argv[1] = -d argv[2] = sample.exp set argc 0 set argv0 "sample.exp" set argv "" executing commands from command file sample.exp expect: does "" (spawn_id exp0) match glob pattern "\n"? no expect: does "\n" (spawn_id exp0) match glob pattern "\n"? yes expect: set expect_out(0,string) "\n" expect: set expect_out(spawn_id) "exp0" expect: set expect_out(buffer) "\n" send: sending "pressed enter" to { exp0 pressed enter}
4. Activer le débogueur attendu avec -D
L'option -D est utilisée pour activer le débogueur et prend simplement la valeur booléenne comme argument. Cela indiquera si le débogueur doit être démarré ou simplement initialisé et utilisé ultérieurement.
$ expect -D 1 script
Les options avant la gauche de l'option -D seront traitées avant le débogueur. Ensuite, les commandes restantes seront exécutées après le démarrage du débogueur.
$ expect -c 'set timeout 10' -D 1 -c 'set a 1' 1: set a 1 dbg1.0>
5. Exécute le script attendu ligne par ligne
Attendez-vous normalement à lire le script entier dans la mémoire avant de l'exécuter. L'option -b permet de s'attendre à lire le script une ligne à la fois. Cela peut être utile lorsque vous n'avez pas complètement écrit le fichier à ce moment-là et que vous vous attendez à commencer à l'exécuter, ce qui évite l'écriture d'un fichier temporaire.
$ expect -b
6. Faire en sorte que les arguments de la ligne de commande ne soient pas interprétés
Vous pouvez faire en sorte que expect n'interprète pas les arguments de la ligne de commande en utilisant — flag.
Normalement, vous lirez les arguments de la ligne de commande comme indiqué ci-dessous.
$ cat print_cmdline_args.exp #!/usr/bin/expect puts 'argv0 : [lindex $argv 0]'; puts 'argv1 : [lindex $argv 1]';
Lors de l'exécution du script ci-dessus, transmettez les options de ligne de commande, qui seront traitées comme un argument (au lieu des options attendues) comme indiqué ci-dessous.
$ expect print_cmdline_args.exp -d -c argv0 : -d argv1 : -c