Я могу выразить свою потребность в следующем сценарии: Записать функцию, которая принимает строку, которая будет запущена как родная команда.
Это не слишком далека от идеи: если вы взаимодействуете с другими утилит командной строки из других источников в компании, которые предоставляют вам команду для запуска дословной версии. Поскольку вы не контролируете команду, вам необходимо принять любую действительную команду в качестве входной. Это основные икоты, с которыми я не мог легко справиться:
-
Команда может выполнять программу, проживающую в пути с пробелом в ней:
$command = '"C:\Program Files\TheProg\Runit.exe" Hello';
-
У команды могут быть параметры с пробелами в них:
$command = 'echo "hello world!"';
-
Команда может иметь как одиночные, так и двойные тики:
$command = "echo `"it`'s`"";
Существует ли любой чистый способ выполнения этого? Я только умею изобретать щедрые и уродливые обходные пути, но для языка сценариев я чувствую, что это должно быть мертвым просто.