как написать команду внутри команды - PullRequest
0 голосов
/ 06 марта 2012

я использую системную команду в perl для выполнения команды su следующим образом

system("su -");

Вышеприведенная команда работает нормально ..

Но если моя команда это

su -c "echo hello"

Тогда как мне вставить эту команду в системную команду perl?

Ответы [ 2 ]

6 голосов
/ 06 марта 2012

system может работать со списком, а не с одной строкой:

Системный список
ПЕРЕЧЕНЬ ПРОГРАММ системы

[...] Обратите внимание, что обработка аргументов варьируется в зависимости от количества аргументов. Если в LIST имеется более одного аргумента или если LIST является массивом с более чем одним значением, запускается программа, заданная первым элементом списка, с аргументами, заданными остальной частью списка.

Чтобы избежать проблем с вложенными кавычками, выполните следующие действия:

system('su', '-c', 'echo hello')
3 голосов
/ 06 марта 2012

Вам просто нужно экранировать кавычки, используя другой набор кавычек:

system('su -c "echo hello"');

Или "избегая" самих цитат:

system("su -c \"echo hello\"");

Или в качестве отдельных аргументов, как указывает mu is too short:

system("su", "-c", "echo hello");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...