Требуется помощь экспертов Expect / ExpectJ - PullRequest
0 голосов
/ 28 апреля 2011

Допустим, у меня есть следующий скрипт: details.sh

echo "name"
read name
if [ "$name" == "abcd" ]; then
echo "hi"
echo "hello"
echo "bye"
fi

=============================================

А это мой код Java

ExpectJ exp = new ExpectJ();
String cmd = "sh details.sh"; //Command for execution of **details.sh**
Spawn s = exp.spawn(cmd); //Spawns the process **details.sh**
s.expect("name");  //Expecting "name" from the script
s.send("abcd");  //When successful, it sends **abcd** as the input to the script

//Now the script will compare the input(given by java code) with the pre-fed one (the one in the script)

s.expect("hi");  //according to me only **hi** must be displayed,but the java console is taking and displaying all the consecutive echo statements from the script.

Есть идеи, почему это происходит? Или оно должно вести себя только так?

Ответы [ 2 ]

0 голосов
/ 02 мая 2011

Хорошо, это будет отображать те же строки, хотя у вас только одна из них. Он отображает все те строки, которые являются последовательными. Я узнал, что это естественное поведение waitj.Spawn.expect () . Вот как это работает.

В этом случае, даже если я положу -

s.expect ( "привет");

вывод, который я получу, будет-

привет Привет прощай

Так что беспокоиться не о чем.

0 голосов
/ 28 апреля 2011

Глядя на ваш вывод скрипта, я бы добавил следующее ожидание

s.expect("hi\nhello\nbye");
...