Ich schreibe ein Java-Programm, von dem ich ein Shell-Skript ausführe. Das Shell-Skript ruft ein anderes Shell-Skript auf. Ich versuche, die vom untergeordneten Skript zurückgegebene Ausgabe in das übergeordnete Shell-Skript zu übertragen. Unten ist mein Code.Java mit Shell Skript
public class App
{
public static void main(String[] args) throws IOException, InterruptedException
{
String command = new String("/home/Test.sh");
Runtime rt = Runtime.getRuntime();
Process process = rt.exec(command);
process.waitFor(1, TimeUnit.MINUTES);
BufferedReader reader = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String s;
while ((s = reader.readLine()) != null) {
System.out.println("Script output: " + s);
}
Shell Script: Test.sh
#!/bin/bash
result=$(bash myscript.sh)
echo "$result"
myscript.sh
#!/bin/bash
echo "50"
ich leere Ausgabe bin immer. Ich dachte zuerst, es könnte sein, weil der Java-Prozess nicht darauf wartet, dass das Shell-Skript beendet wird. Also waitFor() hinzugefügt, aber immer noch keine Verwendung. Kann jemand freundlich helfen?
Überprüfen Sie den Fehler-Stream, weil es auf meiner Seite mit Ihrem Code funktioniert –
versuchen Sie dies; result = $ (bash /home/myscript.sh), vollständiger Pfad von myscript.sh –