[英]How to run Unix shell script in a java code using ExpectJ tool?
這是我的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();
}
}
}
================================================== ====================
這是我的輸出
名稱://這就是要求的水
abcd //這是我給的..什么都沒有發生
================================================== ==========
我已經更正了我的Java代碼。
在您的Java代碼中尋找
s.expect("VALID_NAME=");
但是在您的Bash代碼中,您具有:
echo "Name: "
似乎只需將Java代碼更改為以下內容即可:
s.expect("Name: ");
我從未使用過ExpectJ,但是錯誤消息的開頭sh: hello.sh: No such file or directory
表明它找不到您的Shell腳本。 您是否嘗試過使用腳本的完整路徑?
String command = "sh /root/Desktop/hello.sh";
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.