Attendez-vous à la gestion des arguments
Question
J'aimerais créer un script d'attente qui se connecte au serveur via Telnet et effectue certaines autorisations. J'ai un problème avec l'utilisation des paramètres de script cependant. Basé sur l'homme, je m'attendais à ce que cela fonctionne:
#!/usr/bin/expect -f
spawn telnet $argv1 5038
...
Malheureusement, je récupère ne peut pas lire "argv1": aucune variable de ce type
. Comment cela peut-il fonctionner?
La solution
$ argv
est une liste Tcl contenant les paramètres de ligne de commande, indexés à partir de 0. Vous voulez:
[lindex $argv 0]
Autres conseils
Les arguments de ligne de commande sont fournis sous forme de liste dans la variable argv, vous pouvez utiliser lindex pour obtenir un élément de cette liste. Ainsi, si le premier argument est l'hôte vers telnet, faites:
spawn telnet [lindex $argv 0] 5038
Voir Variables fournies par le shell dans Shells et index dans Listes
J'ai une erreur similaire, ne peut pas lire "argv0": pas de variable de ce type
, lorsque j'ai essayé d'utiliser $ argv0 dans un proc. La solution consistait à y accéder explicitement à partir de l'espace de noms global en utilisant $ :: argv0
.