java执行linux命令
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服务器执行。若不加引号时,参数存在特殊字符时会存在问题,出现执行失败或参数与原本传入参数不同的问题。
暂时没有发现更好的解决办法,改为使用现有传入数组的方式,执行命令。
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步