У меня есть приложение командной строки C #, которое мне нужно запустить в Windows и под моно в Unix. В какой-то момент я хочу запустить подпроцесс с заданным набором произвольных параметров, передаваемых через командную строку. Например:
Usage: mycommandline [-args] -- [arbitrary program]
К сожалению, System.Diagnostics.ProcessStartInfo принимает строку только для аргументов. Это проблема для таких команд, как:
./my_commandline myarg1 myarg2 -- grep "a b c" foo.txt
В этом случае argv выглядит так:
argv = {"my_commandline", "myarg1", "myarg2", "--", "grep", "a b c", "foo.txt"}
Обратите внимание, что кавычки вокруг "a b c" удаляются оболочкой, поэтому, если я просто объединю аргументы для создания строки аргумента для ProcessStartInfo, я получу:
args = "my_commandline myarg1 myarg2 -- grep a b c foo.txt"
Чего я не хочу.
Есть ли простой способ передать argv в запуск подпроцесса под C # ИЛИ преобразовать произвольный argv в строку, которая допустима для Windows и оболочки Linux?
Любая помощь будет принята с благодарностью.