私はC#コマンドラインアプリケーションを持っており、それをWindowsで実行し、UNIXではmonoで実行する必要があります。ある時点で、コマンドラインから渡された任意のパラメーターのセットを指定してサブプロセスを起動したいと思います。例えば:
Usage: mycommandline [-args] -- [arbitrary program]
残念ながら、System.Diagnostics.ProcessStartInfoはargsの文字列のみを取ります。これは、次のようなコマンドの問題です。
./my_commandline myarg1 myarg2 -- grep "a b c" foo.txt
この場合、argvは次のようになります。
argv = {"my_commandline", "myarg1", "myarg2", "--", "grep", "a b c", "foo.txt"}
「abc」を囲む引用符はシェルによって削除されるため、ProcessStartInfoのarg文字列を作成するために引数を単純に連結すると、次のようになります。
args = "my_commandline myarg1 myarg2 -- grep a b c foo.txt"
それは私が望むものではありません。
argvをC#でのサブプロセス起動に渡すか、任意のargvをWindowsおよびLinuxシェルに有効な文字列に変換する簡単な方法はありますか?
どんな助けでも大歓迎です。