Выводить новую строку и начало строки \ t

Чтобы Apache2 мог обрабатывать запросы php, вам необходимо установить php. Поскольку вы используете Ubuntu, вы можете установить, введя следующие команды:

sudo apt-get install php5

... и:

sudo apt-get install libapache2-mod-php5

Затем вам необходимо включить модуль apache с помощью:

sudo a2enmod php5

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

Когда вы закончите с описанным выше, перезапустите apache с помощью:

sudo service apache2 restart

Когда вы выполнили все вышеперечисленное, попробуйте, правильно ли ваш веб-сервер обрабатывает php, поместив что-нибудь действительно простое * в корневой каталог вашего веб-сервера, например :

<?php
    echo "<h3>Hello!</h3>";
    echo "<p>This is printed from a php script</p>";
?>

Предполагая, что приведенный выше сценарий находится в файле с именем hello.php , укажите его в браузере:
<ваш-IP-адрес> /hello.php] {{1} } Если это сработает, это должно выглядеть так:

Здравствуйте!

Это напечатано из сценария php


* Я обычно не поддерживаю размещение phpinfo () на тестовой странице.

1
03.03.2017, 01:27
3 ответа

Это не соответствует руководству по команде, но сам человек утверждает пункт 1:

  1. Эхо зависит от вашей оболочки (и есть другие причины иногда, чтобы этого не было, например, обвязка).
  2. Комментарий Стефана - неплохой вариант: printf it.
  3. echo решение echo -e "a \ na \ ta" (двойные кавычки, прочтите, что они делают, хотя, если вы хотите расширить этот код для чего-то большего) и тесты:

​​`

➜  ~ echo -e a \n a \ta
a n a ta
➜  ~ echo -e "a \n a \ta"
a 
 a  a
➜  ~ echo -e "a\na\ta"   
a
a   a
➜  ~ bash                
T420s:~$ echo -e "a\na\ta"
a
a   a
T420s:~$ echo -e a\na\ta
anata
T420s:~$ echo a\na\ta
anata
T420s:~$ echo "a\na\ta"
a\na\ta
T420s:~$ 

Первая оболочка - ZSH.

1
27.01.2020, 23:19

Фрагмент оболочки «test \ n \\ test» расширяется до строки test \ n \ test , поскольку обратная косая черта внутри двойных кавычек приводит к тому, что следующий символ интерпретируется буквально, если следующий символ является одним из "$ \` , а в противном случае сама обратная косая черта интерпретируется буквально. Тогда echo -e ] заменяет \ n на новую строку и \ t на табуляцию.

Избегайте двойных кавычек для цитирования буквального текста. Вместо этого используйте одинарные кавычки: у них более простые правила - все внутри одинарного кавычки интерпретируются буквально как одинарные кавычки. Если вы решите использовать двойные кавычки, не используйте обратную косую черту, за которой не следует символ, который будет заключаться в кавычки - если вы хотите использовать обратную косую черту внутри двойных кавычек, используйте \\ .

echo -e 'test\n\\test'
echo -e "test\\n\\\\test"
0
27.01.2020, 23:19
echo -e "\\t"

передает \ t в echo , потому что обратная косая черта является специальной внутри двойных кавычек в bash . Он служит оператором экранирования (цитирования). В \\ он убегает сам.

Вы можете сделать следующее:

echo -e "\\\\t"

для передачи echo \\ t ( echo -e "\\\ t" также подойдет ), или вы можете использовать одинарные кавычки, в которых \ не является особенным:

echo -e '\t'

Итак, echo - очень непереносимая команда . Даже в bash его поведение может зависеть от окружения.Я бы посоветовал избежать этого и использовать вместо него printf , с помощью которого вы можете сделать:

printf 'test\n\\test\n'

Или даже решить, какие части подвергаются этим расширениям escape-последовательности:

printf 'test\n%s\n' '\test'

Или:

printf '%b%s\n' 'test\n' '\test'

% b понимает те же escape-последовательности, что и echo (некоторые echo s), в то время как первый аргумент printf , формат, также понимает последовательности, но в немного иначе, чем echo (больше похоже на то, что сделано на других языках). В любом случае \ n понимают оба.

4
27.01.2020, 23:19

Теги

Похожие вопросы