Espere manejo de argumentos
Pregunta
Me gustaría crear un script de espera que se conecta al servidor a través de telnet y hace alguna autorización. Sin embargo, tengo un problema con el uso de parámetros de script. Basado en el hombre, esperaba que esto funcionara:
#!/usr/bin/expect -f
spawn telnet $argv1 5038
...
Desafortunadamente vuelvo no puede leer " argv1 " ;: no existe tal variable
. ¿Cómo puede hacer que esto funcione?
Solución
$ argv
es una lista Tcl que contiene los parámetros de la línea de comando, indexados a partir de 0. Desea:
[lindex $argv 0]
Otros consejos
Los argumentos de línea de comando se proporcionan como una lista en la variable argv, puede usar lindex para obtener un elemento de esta lista, por lo que si el primer argumento es el host al que se debe telnet, haga:
spawn telnet [lindex $argv 0] 5038
Consulte Variables proporcionadas por el shell en Shells y lindex en Listas
Recibí un error similar, no puede leer " argv0 " ;: no existe tal variable
, cuando intenté usar $ argv0 en un proceso. La solución fue acceder explícitamente desde el espacio de nombres global utilizando $ :: argv0
.