Je peux exprimer mon besoin avec le scénario suivant : Écrivez une fonction qui accepte une chaîne de caractères à exécuter comme une commande native.
Ce n'est pas une idée trop farfelue : si vous vous interfacez avec d'autres utilitaires en ligne de commande provenant d'autres parties de l'entreprise qui vous fournissent une commande à exécuter mot pour mot. Comme vous ne contrôlez pas la commande, vous devez accepte toute commande valide en entrée . Ce sont les principaux obstacles que je n'ai pas réussi à surmonter facilement :
-
La commande peut exécuter un programme se trouvant dans un chemin comportant un espace :
$command = '"C:\Program Files\TheProg\Runit.exe" Hello';
-
La commande peut avoir des paramètres contenant des espaces :
$command = 'echo "hello world!"';
-
La commande peut avoir des ticks simples et doubles :
$command = "echo `"it`'s`"";
Est-ce qu'il y a tout un moyen propre d'y parvenir ? Je n'ai été capable que de concevoir des solutions de contournement somptueuses et hideuses, mais pour un langage de script, je pense que cela devrait être très simple.