Я использую MSYS , чтобы получить некоторое подобие разумной оболочки с поддержкой сценариев в Windows:).
Сейчас я пишу консольное приложение, написанное на C #, которое принимает ряд аргументов и представляет их как параметры пользователю в диалоговом окне. Фактические параметры соответствуют именам файлов, которые я получаю с помощью ls.
Однако проблема возникает, когда у меня есть имена файлов с пробелами в них. Допустим, у меня есть файлы с именем:
file name
with spaces
В каталоге с именем foo мой исполняемый файл C # называется bar, и внутри я проверяю содержимое массива "argv" (т. Е. Аргументы командной строки, передаваемые моему приложению в интерпретации .NET).
Когда я это называю, происходит следующая странность:
. / Bar.exe "имя файла" "с пробелами" ->
file name
with spaces
. / Bar.exe $ (ls foo) ->
file
name
with
spaces
. / Bar.exe $ (ls -Q foo) ->
"file
name"
"with
spaces"
Кто-нибудь знает, что здесь происходит? Очевидно, что .NET неправильно анализирует аргументы, переданные bash или ls.
Но даже когда я добавляю кавычки, кавычки включаются в аргументы вместо объединения двух аргументов в один.
Есть ли какой-нибудь способ для меня получить доступ к необработанной командной строке, чтобы я мог видеть, происходит ли какая-нибудь забавность с управляющими символами или чем-то?
Любое понимание будет с благодарностью!