如何通过shell脚本中的命令行来传递参数

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