Я взял этот пример Java для тестирования:
public class Echo extends Application {
/*
* (non-Javadoc)
* @see javafx.application.Application#start(javafx.stage.Stage)
*/
@Override
public void start(Stage primaryStage) throws Exception {
Parameters params = getParameters();
System.out.println("\nRaw");
params.getRaw().forEach(e -> {
System.out.println(e);
});
System.out.println("\nNamed");
params.getNamed().keySet().forEach(key -> {
System.out.println("key : " + key + " / value : " + params.getNamed().get(key));
});
System.out.println("\nUnnamed");
params.getUnnamed().forEach(unnamed -> {
System.out.println(unnamed);
});
Platform.exit();
}
public static void main(String[] args) {
launch(args);
}
}
На самом деле он хорошо работает в Windows.
D:\Profiles\PagboStack\Desktop
λ set args=--arg1="Hello World" arg2=123
D:\Profiles\PagboStack\Desktop
λ echo %args%
--arg1="Hello World" arg2=123
D:\Profiles\PagboStack\Desktop
λ java -jar Echo.jar %args%
Raw
--arg1=Hello World
arg2=123
Named
key : arg1 / value : Hello World
Unnamed
arg2=123
Но с unix все сложнее.Я добился успеха благодаря этому ответу .
Обратите внимание, что эта ссылка предоставляет другие решения, которые вы можете рассмотреть в соответствии с вашими потребностями.
[13/06/2018 14:59.32] /drives/d/profiles/pagbo/Desktop
[pagbo.stack] ➤ export args='--arg1="Hello World"|arg2=123'
───────────────────────────────────────────────────────────
[13/06/2018 15:05.04] /drives/d/profiles/pabgo/Desktop
[pagbo.stack] ➤ IFS='|'
───────────────────────────────────────────────────────────
[13/06/2018 15:05.07] /drives/d/profiles/pagbo/Desktop
[pagbo.stack] ➤ "$JAVA_HOME"/bin/java.exe -jar Echo.jar $args
Raw
--arg1="Hello World"
arg2=123
Named
key : arg1 / value : "Hello World"
Unnamed
arg2=123
Суть в том, чтоизменить внутренний разделитель полей (IFS), который по умолчанию является пробелом.