【发布时间】:2009-12-30 15:16:23
【问题描述】:
我目前正在使用 ProcessBuilder 从 Java 服务器运行命令。该服务器将替换旧的 Perl 服务器,我们的许多遗留代码都指定了特定于平台的命令行。
例如,在 Windows 上它可能会这样做:
command -option "hello world"
在 unix 上它可能会这样做:
command -option 'hello world'
问题是 ProcessBuilder 和 Runtime.exec 都接受标记化的命令行(例如,对于 unix 和 windows,{"command", "-option", "hello world"})。
虽然我更喜欢平台无关的方式,但我们的代码库中有大约 3000 万行 perl 代码。如果没有我为不同平台编写标记器(真的没什么大不了,我只是不想制作 WTF),有没有办法让操作系统上的 shell 标记命令行?
【问题讨论】:
-
command -option "hello world"也适用于 unix,引号就是引号... -
不管怎样,我们的代码确实在 windows 和 unix 上进行了条件化,通常是因为命令比这更复杂,并且有嵌套的引号和命令行变量以及其他类似的废话。
-
3000 万行 perl?!?我很高兴我不是你;)
标签: java command-line