【问题标题】:Passing args into a executable Unix file (MacOS)将 args 传递到可执行的 Unix 文件 (MacOS)
【发布时间】:2013-12-19 08:42:49
【问题描述】:

首先,我在处理过程中遇到了一些问题,但我想解决的是将一些终端参数传递给 Java:

ProcessBuilder pb = new ProcessBuilder("bash",
    "-c",
    "/User/me/path/to/Binaryfile/binfile",
    "-o this -a is -z specific -m kind -y of -kl arguments -i want "
);

如果我使用此代码运行,

ProcessBuilder pb = new ProcessBuilder("bash",
    "-c",
    "/User/me/path/to/Binaryfile/binfile"
);

我得到了二进制文件的执行。请记住,我使用的是 Mac,并且我想运行带有一些特定参数的二进制文件。对不起,如果我的英语不好。

【问题讨论】:

  • 检查了一个完整的例子here
  • 我在 unix 控制台上有点新,我有点难以理解他们传递给流程构建器的参数

标签: java macos unix arguments terminal-emulator


【解决方案1】:

在这个具体的example 中,传递了三个参数:

  • "bash"
  • "-c"
  • "ioreg -l | awk '/IOPlatformSerialNumber/ { print $4;}'"

除非您需要 shell 来解释您的参数,否则您可以这样做:

ProcessBuilder pb = new ProcessBuilder("/User/me/path/to/Binaryfile/binfile",
    "-o xx.xxx.xx.xxx:xxxx", "-u xxxxx", "-p xxxx");

【讨论】:

  • "[2013-12-03 11:58:17] 意外的额外命令行参数 [2013-12-03 11:58:17] 意外的额外命令行参数“我得到这个输出如果我放置这个:ProcessBuilder pb = new ProcessBuilder("bash","-c",/User/me/path/to/Binaryfile/binfile,"-o <a href="/default/index/tourl?u=aHR0cDovL3h4Lnh4eC54eC54eHg6eHh4eA%3D%3D" rel="nofollow" target="_blank">xx.xxx.xx.xxx:xxxx</a>" ,"-u xxxxx","-p xxxxx" );,输出为: Error opening terminal: unknown.
  • 我不明白你为什么要运行一个子shell;查看更新的示例。
  • 我有一个二进制文件,当我运行它时,我必须在 shell 中插入一些参数,我想用 java 启动具有固定参数的二进制文件
  • 用你的代码我得到这个输出:错误打开终端:未知...我不需要调用 bash 或 -c?
  • PS:别忘了我在 macOS 上这样做
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-04-24
  • 2018-10-19
  • 1970-01-01
  • 2012-04-03
  • 1970-01-01
  • 2023-01-26
  • 1970-01-01
相关资源
最近更新 更多