1

これは私の hello.sh シェルスクリプトです

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コードを修正しました..

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、シェル スクリプトが見つからないことを示しています。スクリプトへのフルパスで試しましたか?

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