Я пытаюсь вывести удаленный файл 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 привет там
удар 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));
Когда вы что-то повторяете, вы получите буквальный версия этого. 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