Вывести файл bash потока удаленного сервера с разрывами строк на странице Переполнение стека

Я пытаюсь вывести удаленный файл bash на страницу, чтобы пользователь мог видеть, что происходит. Я могу прочитать файл bash, однако, все, что я пытаюсь сделать, не добавляет новую строку между каждым оператором echo. Кто-нибудь знает как это сделать?

Вот мой файл bash:

scirpt.sh

#!/bin/bash

echo 'touch /tmp/testfile'."\n"echo "I am up\n"echo '\n'
echo "\n"echo
echo 'hello there'

Вот моя логика PHP:

main.php

if(isset($_POST['option']) && $_POST['option'] == 1) {
$stream = ssh2_exec($connection, "/tmp/user/testscripts/up.sh");
stream_set_blocking($stream, true);
$stream_out = ssh2_fetch_stream($stream, SSH2_STREAM_STDIO);
$output = stream_get_contents($stream_out);

}
....
....
....

<div class="box1">
<form method="post">
<label class="col">Up/Down</label>
<span class="col">
<input type="radio" name="option" id="r1" value="1" />
<label for="r1">Up</label>
<input type="radio" name="option" id="r2" value="2" />
<label for="r2">Down</label>
</span>
<span class="col">
<input type="submit" class="button"/>
</span>
</form>

<?php
echo "<pre>$output</pre>"?>

Вот мой вывод на странице:

коснитесь /tmp/testfile.\n Я нахожусь в \ n \ n \ n привет там

0

Решение

удар echo добавляет новую строку, если не -nтак что не включайте их. Eсть -e возможность иметь echo интерпретировать экранированные символы, но вам это здесь не нужно.

Кроме того, для отображения на веб-странице (HTML) вам нужно будет обернуть <pre></pre> теги или использовать PHP nl2br(),

Так что используйте:

echo 'touch /tmp/testfile'
echo 'I am up'
echo
echo
echo
echo 'hello there'

Или же:

echo 'touch /tmp/testfile
I am uphello there'

HTML не отображает переводы строки, поэтому он обрабатывает его как предварительно отформатированный текст, который будет:

echo '<pre>' . stream_get_contents($stream_out) . '</pre>';

Или преобразовать переводы строк в HTML <br> теги:

echo nl2br(stream_get_contents($stream_out));
1

Другие решения

Когда вы что-то повторяете, вы получите буквальный версия этого. C-стиль \n не вариант

Два варианта. Первый:

echo 'touch /tmp/testfile'
echo 'I am up'
echo
echo
echo
echo 'hello there'

Опция раздела — это HEREDOC, предоставленный cat:

cat <<END
touch /tmp/testfile
I am uphello there
END
1

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector