Ниже приведен сценарий оболочки, который, как ожидается, будет выбирать по одной строке из заданного файла, выделяя ее.
#!/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
, обратите внимание на функцию выделения синтаксиса. По умолчанию строка будет красного цвета, а переменная - фиолетового цвета.