Не допускайте, чтобы $ Интерпретировался как Начало переменной в командной строке в PHP-скрипте

#php #exec

Вопрос:

У меня есть текст, переданный в php-скрипт в командной строке.

 exec('echo ' . escapeshellarg($text) . ' | script.php');
 

Иногда в тексте $есть знак доллара, например The ticket cost $1 and was easy to get.

Если я сохраню копию выходных данных из escapeshellarg($text), они будут отображаться правильно.

Внутри script.php Я получаю переменную с $text = $this->getStdin(Maintenance::STDIN_ALL); , однако, если я сохраню копию текста $в этот момент, он заменит $1 разрывами строк, что-то вроде:

 The ticket cost 

 and was easy to get.
 

Как я могу предотвратить изменение текста?

Комментарии:

1. что такое $this->getStdin() ?

2. И как вы экономите стоимость $text ?

3. exec() не делает ничего плохого. Если вы перенаправите вывод в файл , а не в конвейер script.php , вы увидите литерал $ .