簡體   English   中英

使用帶有PS4設置的Java在調試模式下運行bash腳本

[英]running bash script in debug mode using java with PS4 set

我想使用帶有PS4環境變量集的Java在調試模式下運行bash腳本。

ProcessBuilder pb = new ProcessBuilder("/bin/bash" ,"-x", "/junk/leaptest.sh");
Map<String, String> env = pb.environment();
env.put("PS4", "${BASH_SOURCE}:::${LINENO}:::COV:");
final Process process = pb.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
PrintWriter pw = new PrintWriter(process.getOutputStream());
String line;
while ((line = br.readLine()) != null) {
    System.out.println("line no--->>" + line);
    pw.println("2000");
    pw.flush();
}

輸出的是我得到的輸出,因為它未在調試模式下運行並且未設置我的PS4 env

當我使用運行時命令時,同樣的事情起作用,

String[] cmd = new String[3];
cmd[0] = "/bin/bash"; // should exist on all POSIX systems
cmd[1] = "-xv";
cmd[2] = args[0];

String[] env = new String[1];
env [0] = "PS4=${BASH_SOURCE}:::${LINENO}::: COV:";
Runtime rt = Runtime.getRuntime();
System.out.println("Execing " + cmd[0]  + cmd[1]);

Process proc = rt.exec(cmd,env);

bash使用-x運行時,它將跟蹤信息寫入標准錯誤,而不是標准輸出。 您需要使用類似以下內容來捕獲它:

PrintWriter pwe = new PrintWriter(process.getErrorStream());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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