在expect脚本中读取用户的变量

时间:2016-10-14 03:53:17

标签: expect

以下是我的剧本:

#!/usr/bin/expect
echo "enter unique id" 
read test
mkdir -p  /evoting_test/$test
        spawn scp -r abc@10.150.10.104:/shareddata/was/l1/*.pdf /rishabh/$test/
        set pass "abc123"
        expect {
                password: {send "$pass\r"; exp_continue}
                }

我收到错误:

invalid command name "echo"
    while executing
"echo "enter uNIQUE id" "
    (file "./scp_test.sh" line 2)

它不是从用户读取变量并在命令中使用该变量

2 个答案:

答案 0 :(得分:2)

"期待"这样做的方法是:

send_user "enter unique id: "
expect_user -re "(.*)\n"
set test $expect_out(1,string)
send_user "you said $test\n"

由于期望延长,您可以使用:

puts -nonewline "enter unique id: "
flush stdout
gets stdin test
puts "you said $test"

此外,您将收到mkdir的错误 - 这是一个外部命令。您可以执行以下操作之一:

exec mkdir -p /evoting_test/$test   # invoke the external command
file mkdir /evoting_test/$test      # use the builtin

请参阅http://tcl.tk/man/tcl8.6/TclCmd/file.htm

答案 1 :(得分:0)

恕我直言,解决这个问题的最佳方法是将两个文件分开,每个文件根据其要求使用不同的解释器。

  1. 第一个文件:将包含将所有pdf文件scp到所需位置的代码,您也可以在此脚本中读取目标位置。

  2. 使用expect运行上述文件并完成工作。