#!/bin/sh
export JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo JAVA_HOME=$(dirname $(dirname $(readlink -f $(which javac))))
echo JAVA_HOME=$JAVA_HOME
${JAVA_HOME}/bin/java -jar xxxxx
によって$ JAVA_HOMEを取得するにはどうすればよい私はJSCHに、リモートマシン上でこのスクリプトを実行する:は私がJSCH
public boolean actionShell(Session sshSession, String command) {
boolean flag = false;
Channel channel = null;
try {
channel = sshSession.openChannel("exec");
((ChannelExec) channel).setCommand(command);
channel.setInputStream(null);
((ChannelExec) channel).setErrStream(System.err);
InputStream in = channel.getInputStream();
channel.connect();
while (true) {
if (channel.isClosed()) {
if (in.available() > 0) continue;
flag = channel.getExitStatus() == 0 ? true : false;
log.info("exit-status: " + flag);
break;
}
Thread.sleep(1000);
}
} catch (Exception e) {
log.error("error", e.getMessage());
} finally {
if (channel != null || channel.isConnected())
channel.disconnect();
}
return flag;
}
結果は、このshスクリプトは、JAVA_HOMEの値を取得することができないことを示しています。
JAVA_HOME=
JAVA_HOME=
/bin/java -jar xxxxx
私たちはリモートマッチンンのconfを取得しないため、JAVA_HOMEを指摘できません。
あなたは対話型のSSHターミナルでスクリプトを実行するときに、異なる結果を得るのですか? –