Actuellement, j'utilise ProcessBuilder pour exécuter des commandes à partir d'un serveur Java. Ce serveur remplace un ancien serveur Perl et une grande partie de notre code hérité spécifie des lignes de commande spécifiques à la plate-forme.Exécution d'une ligne de commande non codifiée à partir de Java
Par exemple, sur Windows, il peut faire:
command -option "hello world"
et sur unix il pourrait faire:
command -option 'hello world'
Le problème est que ProcessBuilder et Runtime.exec prennent tous les deux en lignes de commande lexicalisés (par exemple, {"command", "-option", "hello world"} pour unix et windows).
Alors que je préfère la plate-forme indépendante, nous avons quelque part dans la gamme de 30 millions de lignes de code perl dans notre code. Sans moi écrire un tokenizer pour les différentes plates-formes (pas vraiment un gros problème, je ne veux pas faire de WTF), est-il possible de laisser le shell sur le système d'exploitation tokenize la ligne de commande?
'commande -option "Bonjour tout le monde"' œuvres sur unix et , citations sont des citations ... – akuhn
Quoi qu'il en soit, notre code conditionne sur Windows vs Unix, généralement parce que les commandes sont plus complexes que cela et ont des citations imbriquées et des variables de ligne de commande et d'autres non-sens. – tster
30 millions de lignes de perl?!? Je suis tellement content que je ne suis pas vous;) – Fantius