bash脚本输出未显示在网页上

时间:2012-11-14 10:46:26

标签: php javascript jquery html bash

我正在尝试将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中添加了标签,以相同的间隔刷新页面,但它仍然不起作用。知道为什么这个脚本不会显示?在这一点上有点不知所措。感谢您的回复。

2 个答案:

答案 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