我expect
通过shell脚本中的命令行参数
我试过这个
#!/usr/bin/expect -f set arg1 [lindex $argv 0] spawn lockdis -p expect "password:" {send "$arg1\r"} expect "password:" {send "$arg1\r"} expect "$ "
但它不工作。 请帮我弄明白。
谢谢
如果你想从参数中读取,你可以简单地通过
set username [lindex $argv 0]; set password [lindex $argv 1];
并打印出来
send_user "$username $password"
该脚本将打印
$ ./test.exp user1 pass1 user1 pass1
您可以使用调试模式
$ ./test.exp -d user1 pass1
更好的方法可能是这样的:
lassign $argv arg1 arg2 arg3
但是,你的方法也应该工作。 检查是否检索到arg1
。 例如,使用send_user "arg1: $arg1\n"
。
带空格的参数很好,假设你想要的arg是脚本名字后面的第一个( $0
是脚本名称, $1
是第一个参数,等等)
确保你使用"$ARG"
不是 $ARG
因为它不会包含空格,而是把它们分解成单独的参数。 在你的bash
脚本中这样做:
#!/bin/bash ARG="$1" echo WORD FROM BASH IS: "$ARG" #test for debugging expect -d exp.expect "$ARG" exit 0
此外,作为第一个答案状态,使用调试模式,(- -d
标志)它会输出你expect
看到他们的argv
变量,应该告诉你怎么回事。
请注意,有时argv 0是您正在调用的脚本的名称。 所以如果你这样运行,argv 0不起作用,
对我来说,我运行“>期望script.exp密码”
这使得argv 1 =密码argv 0 = script.exp