У меня есть доступ к серверу Ubuntu с PHP 7.0. Я могу без проблем запустить следующий код:
php -r "echo 'hello world';"
Но когда я добавляю оператор присваивания следующим образом:
php -r "echo 'hello world'; $t = 'hello world';"
Я получаю следующую ошибку:
Ошибка синтаксического анализа PHP: синтаксическая ошибка, неожиданное ‘=’, ожидаемый конец файла в коде командной строки
Я только что понял при наборе этого вопроса, что это, вероятно, происходит, потому что оболочка пытается оценить $t
, Есть ли способ заставить его не оценивать $t
? Я спрашиваю, потому что код будет содержать одинарные кавычки. Я полагаю, что простым решением было бы заменить одинарные кавычки в коде на двойные кавычки, но если есть способ сделать это без изменения кода, это может быть полезно знать.
экранировать все специальные символы оболочки в коде php с помощью \
т.е.
php -r "echo 'hello world'; \$t = 'hello world';"
Чтобы предотвратить подстановку переменных оболочки в вашем скрипте, вы должны заключить код в одинарные кавычки и использовать двойные кавычки внутри. Если по какой-либо причине вам нужно иметь одинарные кавычки в своем фрагменте кода, тогда избегайте их с обратной косой чертой:
php -r 'echo \'hello world\'; $t = \'hello world\';'