2010-06-26 5 views
2

Каков правильный способ для правильно процитировать один аргумент командной строки? Например, у меня есть случайный текст в переменной $X. Мне нужно, чтобы процитировать его таким образом, чтобы, если я называюCMD.exe со ссылкой на строку

system("program.exe " + $X_QUOTED); 

затем argv[1] мой program.exe должен соответствовать оригинальным неупомянут $X

себе представить, у меня есть этот program.exe:

int main(const char **argv, int){ puts(argv[1]); } 

и вывод команды: "программа хххх" является:

"test |test 

, что xxxx должно буквально быть? Я попытался добавить кавычки и все эти обманки, но тогда я всегда могу добавить какой-то другой тип вывода, который нарушил бы мой подход, чтобы процитировать аргументы строки cmd.

ответ

2
H:>args """test |test" 
argv[0] = args 
argv[1] = "test |test 

Видимо:

  • Заменить каждую цитату ""
  • Surround аргумент в кавычки
+0

Это вещь. Для меня это фактически печатает: 1: «Тест 2: |? Тест Может быть, потому что я использую Perl в этом случае, и он использует другой подход, чтобы разделить командную строку .. – PPS

+0

1:» тест
2: | тест
Как, черт возьми, я могу поставить символы новой строки?! ??? – PPS

+0

@PPS: Вы не можете. Вы можете отредактировать исходный вопрос, если вам нужно что-то добавить. – Joey

Смежные вопросы