我使用以下脚本来处理expect
的多个用户输入:
#!/usr/bin/bash
TEST1="Test text"
TEST2="Hello World"
expect -c '
spawn /home/alexander/read.sh
expect -re "Please enter some input:.*"
send "'"$TEST1"'\r\n"
expect -re "Please enter other input:.*"
send "'"$TEST2"'\r\n"
'
这是一个不同的版本:
#!/usr/bin/bash
TEST1="Test text"
TEST2="Hello World"
expect -c '
spawn /home/alexander/tasks/update/test/Expect/read.sh
expect {
"Please enter some input:" { send "'"$TEST1"'\r" }
exp_continue
}
expect {
"Please enter other input:" { send "'"$TEST2"'\r" }
}
'
read.sh
脚本如下所示:
#!/bin/bash
read -p "Please enter some input: " input_variable
echo "You entered: $input_variable"
read -p "Please enter other input: " other_variable
echo "You entered: $other_variable"
当我单独执行read.sh
时,我会被要求输入两次,这也会打印到stdout。另一方面,expect
脚本似乎不处理第二个输入。我得到的输出如下:
spawn /home/alexander/read.sh
Please enter some input: Test text
You entered: Test text
Please enter other input:
我做错了什么,如何解决这个问题?
备注:
exp_continue
会导致command returned bad code: -101
错误。答案 0 :(得分:2)
这有效:
#!/bin/bash
TEST1="Test text"
TEST2="Hello World"
expect -c '
spawn /tmp/read.sh
expect {
"Please enter some input:" { send "'"$TEST1"'\r"
exp_continue
}
"Please enter other input:" { send "'"$TEST2"'\r"
exp_continue
}
}'