我正在尝试将远程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 :(得分:1)
当您回复某些内容时,您将获得 \n
不是一个选项。
两个选项。第一个是:
echo 'touch /tmp/testfile'
echo 'I am up'
echo
echo
echo
echo 'hello there'
部分选项是提供给cat
的HEREDOC:
cat <<END
touch /tmp/testfile
I am up
hello there
END
答案 1 :(得分:1)
bash label_lines
会附加换行符,除非使用echo
进行抑制,因此不要包含它们。有一个-n
选项让-e
解释转义后的字符,但您不需要这样做。
此外,要在网页(HTML)上显示,您需要包含echo
标记或使用PHP <pre></pre>
。
所以使用:
nl2br()
或者:
echo 'touch /tmp/testfile'
echo 'I am up'
echo
echo
echo
echo 'hello there'
HTML不会呈现换行符,因此将其视为预先格式化的文本:
echo 'touch /tmp/testfile
I am up
hello there'
或将换行符转换为HTML echo '<pre>' . stream_get_contents($stream_out) . '</pre>';
标记:
<br>