bash — Подчеркнуть в php shell_exec

я пытаюсь выполнить команду grep внутри php shell_exec. И это работает хорошо, кроме того, что не получается, когда у меня есть подчеркивание в поисковом слове. Я не могу понять, почему это не удается из-за подчеркивания, поскольку команда grep с подчеркиванием в поисковом слове работает в коде оболочки ниже:

$output = shell_exec("grep -l -r '$search_word'");

Содержимое в переменной search_word является динамическим из базы данных, но слово, которое доставляет мне неприятности, — base_64

-2

Решение

Попробуйте вот так:
$ output = shell_exec («grep -l -r ‘$ search_word’ ./*»);

0

Другие решения

Прежде чем PHP создаст подпроцесс, ваша команда будет $search_word оценивали:

grep -l -r '....'
# So in $search_word is set to `john doe` it will become:
grep -l -r 'john doe'

Как ведет себя PHP Я не уверен, возможно, он застопорился в ожидании завершения процесса, возможно, он уже закрывал стандартный ввод.

Ваша команда ожидает ввода от stdin, потому что имя файла не указано, разбивка:

grep [опция] … [шаблон] [файл] …
-Я буду печатать только имя файла соответствующего файла
-рекурсивный поиск.

TLDR: Вы правильно хотите указать файл / каталог для поиска:

$output = shell_exec("grep -l -r '$search_word' .");
// Or maybe
$output = shell_exec("grep -l -r '${search}_word' ."); # will use $search variable as an input from PHP while _word is a string now.
0

По вопросам рекламы [email protected]