Назад | Перейти на главную страницу

Выделите код построчно

Ниже приведен сценарий оболочки, который, как ожидается, будет выбирать по одной строке из заданного файла, выделяя ее.

#!/bin/sh
> myhighlight.txt
file='to_study.php'
cat $file | while read -r myline
do
export $myline
php -r 'highlight_string("$myline");' >> myhighlight.txt
done

PHP не может понять переменную $ myline. Есть ли способ заставить этот код работать?

Вы поменяли цитаты, вы хотите php -r "highlight_string('$myline');". Что касается PHP, это заставит его светиться постоянной строкой, которую bash подает в нее.

Одиночные кавычки используются, когда вы хотите буквально напечатать все внутри. Итак, PHP выдаст ошибку ниже с вашим кодом:

PHP Notice:  Undefined variable: myline in Command line code on line 1

Используйте двойные кавычки, чтобы раскрыть переменные:

php -r "highlight_string($myline);" >> myhighlight.txt

Не нужно заворачивать $myline переменная с одинарной кавычкой.

Подводя итог, одинарные кавычки сильнее двойных.

PS: если вы пишете в vim, обратите внимание на функцию выделения синтаксиса. По умолчанию строка будет красного цвета, а переменная - фиолетового цвета.