日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

ProcessBuilder执行bash脚本

發(fā)布時(shí)間:2024/7/23 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 ProcessBuilder执行bash脚本 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

我正在嘗試從Java執(zhí)行bash腳本,它返回錯(cuò)誤/ bin / bash:’/ home / nika / NetBeansProjects / Parallel Framework / process-executor.sh’:沒有這樣的文件或目錄,我正在使用ubuntu使用netbeans8& 14.04 jdk8.

這是我的代碼:

public class Process { public static void main(String[] args) {try {ProcessBuilder pb = null;Process p;String cmd2 = "";String workingDir = System.getProperty("user.dir");System.out.println(""+workingDir);String scriptloc="'"+workingDir+"/process-executor.sh'";String cmd[] = {"/bin/bash",scriptloc , "workspace/ForDemo.java", "ForDemo.java", "ForDemo"};for (int i = 0; i <= cmd.length-1; i++) {cmd2 += " "+cmd[i];}System.out.println("" + cmd2);pb = new ProcessBuilder(cmd);pb.directory(new File(workingDir));p = null;try {p = pb.start();} catch (IOException ex) {Logger.getLogger(Process.class.getName()).log(Level.SEVERE, null, ex);}BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));BufferedReader stdError = new BufferedReader(new InputStreamReader(p.getErrorStream()));// read the output from the commandSystem.out.println("Here is the standard output of the command: ");String s = null;String output = "";while ((s = stdInput.readLine()) != null) {System.out.println(s);}output = "";// read any errors from the attempted commandSystem.out.println("Here is the standard error of the command (if any): ");while ((s = stdError.readLine()) != null) {System.out.println(s);}} catch (IOException ex) {Logger.getLogger(Process.class.getName()).log(Level.SEVERE, null, ex);} } }

但是當(dāng)我從終端執(zhí)行此命令時(shí),它會(huì)執(zhí)行腳本
?bin / bash’/ home / nika / NetBeansProjects / Parallel Framework / process-executor.sh’工作區(qū)/ForDemo.java ForDemo.java ForDemo

我的腳本存在另一個(gè)問題,它不執(zhí)行cd命令,并顯示“ / home / nika / NetBeansProjects / Parallel Framework / workspace / ForDemo.java /”:沒有這樣的文件或目錄

我腳本的內(nèi)容是

#!/bin/bash PATH=/bin:/usr/bin:/usr/local/binWORK=${PWD}/workspace/echo "'${WORK}${2}'"cd "'${WORK}${2}/'"javac $2 java $3 echo "$3"

我的目錄層次結(jié)構(gòu)就像

-并行框架
???-process-executor.sh
???-工作區(qū)
??????-ForDemo.java(目錄)
??????????—- ForDemo.java

最佳答案

在這種情況下,請(qǐng)不要在腳本的路徑中使用單引號(hào). e.像這樣修復(fù)您的scriptloc變量:

String scriptloc= workingDir + "/process-executor.sh";

如果要在命令行中執(zhí)行此命令(以轉(zhuǎn)義路徑中的空格字符),則必須使用單引號(hào),但在這種情況下則沒有必要,因?yàn)槟呀?jīng)在cmd []數(shù)組中隱式指定該路徑只是一個(gè)“單元”

總結(jié)

以上是生活随笔為你收集整理的ProcessBuilder执行bash脚本的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。