2011-04-18 76 views
1

这是我hello.sh shell脚本如何使用ExpectJ工具在java代码中运行Unix shell脚本?

VALID_NAME="abcd" 

echo "Name: " 

read name 

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

echo "correct" 

else 

echo "unexpected input" 

fi 

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

这是我的Java代码

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

这是我的输出

名称://这是笏它要求

ABCD //这是我give..and什么也没有发生

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

我已经纠正了我上面的Java代码..

+0

如果ExpectJ就像香草期待,你必须发送一个回车:'s.send( “ABCD \ r”);' – 2011-04-18 13:52:03

+0

@glenn:我没有太多的想法大约期望无论是。这是我第一次在expectj工作。无论如何,我认为你的建议,但不幸的是,没有工作.. – hari 2011-04-19 05:20:37

回答

3

在Java代码中你看

在bash代码
s.expect("VALID_NAME="); 

的是,你必须:

echo "Name: " 

看起来简单地改变你的Java代码下面应该工作:

s.expect("Name: "); 
+0

我已经更新了上述问题的代码...请看看.. – hari 2011-04-18 12:33:41

+0

@hari好像你需要使用getCurrentStandardOutContents ()''。还有可能''expectClose()''。请参阅:http://expectj.sourceforge.net/apidocs/index.html。 – Darhuuk 2011-04-18 12:41:23

+0

@darhuuk:我已经做出了修改,因为你建议..但没有改变输出。 – hari 2011-04-19 05:06:22

0

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

String command = "sh /root/Desktop/hello.sh"; 
+0

@darhuuk:谢谢..我做出了改变,你们建议和它的工作..但只在一定程度上..新的问题是其采取输入..但不显示相应的输出..我错过了这里很愚蠢的东西?? – hari 2011-04-18 12:27:51

+0

A \ n在这里或那里,也许? – Ingo 2011-04-18 13:08:09

+0

@ngo:\ n在这里没有问题..我想我错过了一些声明..不知道那是什么.. – hari 2011-04-19 04:30:33

相关问题