首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用ExpectJ工具在java代码中运行Unix脚本?

如何使用ExpectJ工具在java代码中运行Unix脚本?
EN

Stack Overflow用户
提问于 2011-04-18 11:30:27
回答 2查看 2K关注 0票数 1

这是我的hello.sh shell脚本

代码语言:javascript
复制
VALID_NAME="abcd"

echo "Name: "

read name

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

echo "correct"

else

echo "unexpected input"

fi

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

这是我的Java代码

代码语言:javascript
复制
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();
    }       
}
}

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

,这是我的输出

名称://这是它要求的

give..and //这就是我--什么都没发生--

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

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

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-04-18 11:38:47

在您寻找的Java代码中

代码语言:javascript
复制
s.expect("VALID_NAME=");

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

代码语言:javascript
复制
echo "Name: "

似乎只需将Java代码更改为以下代码就可以了:

代码语言:javascript
复制
s.expect("Name: ");
票数 3
EN

Stack Overflow用户

发布于 2011-04-18 11:55:50

我从未使用过ExpectJ,但是错误消息sh: hello.sh: No such file or directory的开头提示它找不到您的shell脚本。你试过完整的脚本路径吗?

代码语言:javascript
复制
String command = "sh /root/Desktop/hello.sh";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5702178

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档