簡體   English   中英

如何使用ExpectJ工具在Java代碼中運行Unix Shell腳本?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM