1

这是我的 hello.sh shell 脚本

VALID_NAME="abcd"

echo "Name: "

read name

if [ "$name" == $VALID_NAME ]; then

echo "correct"

else

echo "unexpected input"

fi

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

这是我的 Java 代码

import java.io.IOException;

import expectj.*;

public class Trial {
public static void main(String[] args) {

    ExpectJ exp = new ExpectJ();
    String command = "sh /root/Desktop/hello.sh";
    Spawn s;
    try {
        s = exp.spawn(command);
        s.expect("Name: ");
        s.send("abcd");
        System.out.println(s.getCurrentStandardOutContents());
        s.stop();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (TimeoutException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }catch (ExpectJException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }       
}
}

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

这是我的输出

名称://这是它要求的 wat

abcd //这是我给的..什么也没发生

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

我已经更正了我上面的java代码..

4

2 回答 2

3

在您寻找的 Java 代码中

s.expect("VALID_NAME=");

然而在你的 Bash 代码中,你有:

echo "Name: "

似乎只需将您的 Java 代码更改为以下内容即可:

s.expect("Name: ");
于 2011-04-18T11:38:47.073 回答
0

我从未使用过 ExpectJ,但您的错误消息的开头sh: hello.sh: No such file or directory表明它无法找到您的 shell 脚本。您是否尝试过使用脚本的完整路径?

String command = "sh /root/Desktop/hello.sh";
于 2011-04-18T11:55:50.607 回答