[英]Run shell script from Java Synchronously
我試圖從Java執行Bash Shell腳本,它使用這段代碼運行正常。
public void executeScript() {
try {
new ProcessBuilder("myscript.sh").start();
System.out.println("Script executed successfully");
} catch (IOException e) {
e.printStackTrace();
}
}
上面的代碼異步運行。 但我想要實現的是同步執行代碼。 我希望Java進程等到腳本執行完成后再執行下一批代碼。
總而言之,我希望在批處理文件(“myscript.sh”)完成執行后執行“打印語句 - 成功執行腳本”。
謝謝
你想等待Process完成,就是這樣的waitFor()
public void executeScript() {
try {
ProcessBuilder pb = new ProcessBuilder(
"myscript.sh");
Process p = pb.start(); // Start the process.
p.waitFor(); // Wait for the process to finish.
System.out.println("Script executed successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
如果我想將文件從一個位置移動到另一個位置,上面的代碼不起作用,所以我用下面的代碼修復了它。
class Shell
{
public static void main(String[] args) {
try {
ProcessBuilder pb = new ProcessBuilder("/home/sam/myscript.sh");
Process p = pb.start(); // Start the process.
p.waitFor(); // Wait for the process to finish.
System.out.println("Script executed successfully");
} catch (Exception e) {
e.printStackTrace();
}
}
}
myscript.sh
#!/bin/bash
mv -f /home/sam/Download/cv.pdf /home/sam/Desktop/
使用Process#waitFor()
暫停Java代碼,直到腳本終止。 如在
try {
Process p = new ProcessBuilder("myscript.sh").start();
int rc = p.waitFor();
System.out.printf("Script executed with exit code %d\n", rc);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.