import java.io.*; public class T{ public static void main(String[] args) { // String cmd1 = "sudo nmcli connection delete '"+args[0]+"'"; // String cmd2 = "sudo nmcli connection delete "+args[0]+""; String[] cmd = {"sh","-c","sudo nmcli con delete '"+args[0]+"'"}; System.out.println(cmd); try { // logger.info("啟用失敗或刪除wifi后刪除連接信息:"+cmd); Process p = Runtime.getRuntime().exec(cmd); BufferedReader br = new BufferedReader(new InputStreamReader(p.getInputStream())); String line = null; // StringBuilder result = new StringBuilder(); while ((line = br.readLine()) != null) { System.out.println(line); } } catch (Exception e) { e.printStackTrace(); } } }
問題:
執行cmd1時,始終無法在linux服務器執行,但若執行cmd2時,就可以正常在linux服務器執行。若不加引號時,參數存在特殊字符時會存在問題,出現執行失敗或參數與原本傳入參數不同的問題。
暫時沒有發現更好的解決辦法,改為使用現有傳入數組的方式,執行命令。
