我正在尝试将bash脚本的输出显示在我的网页上的div中。但是,当我加载页面时,没有任何显示。这是我到目前为止所拥有的。
Jquery ajax函数。 Discon是信息应该出现的div的名称。
$(document).ready(function() {
$.ajax({
type: "POST",
url: "discon.php",
data: "Discontinuities",
success: function(data) {
$('#discon').html(data)
}
});
});
这是我的php来获取jquery中的内容。注意注释掉的部分是我在php中尝试不同选项的地方。我已经尝试了几个,似乎没有任何工作。
<?php
echo passthru('/opt/bin/enc_current_test');
//$discon = exec('/opt/bin/enc_current_test', $o, $r);
//if ($r != 0){
// print 'Error running command';
// exit($r);
//}
//else{
// print implode("\n", $o);
//}
?>
我有另一个bash脚本显示在不同Div中的同一页面,它工作正常所以我的问题是为什么这个给我一个问题。这是bash脚本。
#!/bin/bash
while [ true ]
do
counter=0
clear
date
dir=/test/`date "+%Y/%m/%d"`
cd $dir
echo Writing On: `pwd`
for i in `ls`
do
if [ -n "$(ls -l $i/* | grep `date "+ %k:%M"`)" ];
then
echo $i
let "counter+=1"
fi
done
echo
echo "Total Current Streams: "
echo $counter
sleep 60
clear
done
我认为这是因为脚本睡了60秒,但我在我的html中添加了标签,以相同的间隔刷新页面,但它仍然不起作用。知道为什么这个脚本不会显示?在这一点上有点不知所措。感谢您的回复。
答案 0 :(得分:1)
删除echo
之前的passthru()
。
passthru()
不会返回任何内容(void),它会直接输出。所以你当前的陈述回声void
。
答案 1 :(得分:1)
你的bash脚本运行无限循环
while [ true ]
do
...
done
Web服务器一直在等待脚本的答案,并且不会将其发送到客户端(浏览器)
尝试在bash脚本中使用loop和sleep命令进行注释
我猜你也不想看到由clear命令写的额外字符,所以也要评论它们
#!/bin/bash
#while [ true ]
#do
counter=0
# clear
date
dir=/test/`date "+%Y/%m/%d"`
cd $dir
echo Writing On: `pwd`
for i in `ls`
do
if [ -n "$(ls -l $i/* | grep `date "+ %k:%M"`)" ];
then
echo $i
let "counter+=1"
fi
done
echo
echo "Total Current Streams: "
echo $counter
# sleep 60
# clear
#done