[英]Problems in running AWS CLI bash command within Java
我正在嘗試在 Java 代碼中運行 AWS 命令(在 Linux 中)。 像往常一樣,我嘗試在 Java 中像這樣運行 bash 命令。 但我想知道它沒有顯示任何內容。 並且只打印Exited with error code : 2
。 當我在 bash 中運行aws ls help
時,它可以工作。
問題是什么? 如何解決?
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class TestCMD {
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder();
processBuilder.command("bash", "-c", "aws ls help");
try {
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
int exitCode = process.waitFor();
System.out.println("\nExited with error code : " + exitCode);
} catch (Exception e) {
e.printStackTrace();
}
}
}
Java 代碼不是問題。 它工作正常,您可以通過將command
替換為
processBuilder.command("bash", "-c", "echo 1 2 3");
你有兩個“問題”。 第一個問題是aws
將其輸出寫入 stderr,而不是 stdout。
第二個問題是aws
返回 2 ,其中0
恕我直言更好。
您可以在命令行上使用以下命令進行測試:
aws ls help 2>/dev/null; echo $?
問題可以解決
processBuilder.command("bash", "-c", "/usr/bin/aws ls help 2>&1; true");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.