java - 从java程序内部执行linux命令

标签 java shell command-line

我正在尝试使用 java swing 创建 GUI。从那里我必须运行 Linux 系统命令。我尝试使用 exec()。但如果字符串包含单引号,exec() 函数将无法解析该字符串。我使用的代码如下-

Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt '( it_department or ( marketing and manager ) )'")
BufferedReader stdInput = new BufferedReader(new InputStreamReader(p.getInputStream()));

但是当我运行程序时出现错误 - "'(" 出现语法错误。

当我写入时运行相同的命令

Process p = Runtime.getRuntime().exec("cpabe-enc pub_key message.txt default")

请帮忙。预先感谢您的帮助。

最佳答案

将参数拆分为一个数组,每个参数一个字符串,并使用以 String[] 为参数的 exec-method,这通常对于参数来说效果更好。 大致如下:

Runtime.getRuntime().exec(new String[] {"cpabe-enc", "pub_key", "message.txt", "( it_department or ( marketing and manager ) )"});

或者无论你的确切参数是什么。

关于java - 从java程序内部执行linux命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9920675/

相关文章:

java - openFileOutput 不工作

java - 从 Spring Batch 自定义 ItemReader 返回对象列表

java - 如何在java类中打开Assets文件夹中的文件

php - 使用 PHP 的交互式 shell

linux - 使用nohup启动java程序进入循环

bash - 相当于 `getrusage()` 的命令行

windows - 如何运行 cython 命令行选项

java - c3p0 日志记录不起作用

linux - 遍历 bash 中的参数

linux - vim:删除命令行中不匹配的行