3

Я рекурсивно ищу возникновение php-скриптов, вызываемых из других файлов, используя следующий скрипт.

find . -exec grep -Hn $1 {} \; | grep -v ^Binary;

Работает отлично! Теперь мне нужны возвращенные результаты, чтобы определить, какое действие нужно предпринять дальше.

r=$(find . -exec grep -Hn $str {} \; | grep -v ^Binary;)

 if [ -z "$r" ];
    then
          Do this
    else
          Do something else
    fi

ПРОБЛЕМА: Сам по себе скрипт поиска возвращает результаты, каждый в новой строке.

./path/to/file.php
./path/to/another_file.php
./path/to/third_file.php

Однако при назначении вывода переменной $ r символ новой строки не сохраняется, а результаты печатаются в одну строку, что затрудняет чтение.

./path/to/file.php ./path/to/file.php ./path/to/third_file.php

Как сохранить символ новой строки при назначении вывода в переменную?

1 ответ1

6

Вы не показываете, что делаете с $r , но держу пари, что это

echo $r

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

echo "$r"

Без кавычек переменная может быть разбита на слова, где любые последовательности пробелов 1 (включая новые строки) заменяются одним пробелом 1

1: по умолчанию зависит от содержимого $IFS (по умолчанию: пробел, табуляция, новая строка)

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .