【问题标题】:PHP shell script 'echo -ne' how? (Shell Progressbar)PHP shell 脚本 'echo -ne' 怎么样? (外壳进度条)
【发布时间】:2013-11-15 09:02:58
【问题描述】:

我有一个 PHP 脚本,我想在其中展示它的进度。 从这个超级问题和完美答案How to add a progress bar to a shell script? 我试图模仿这种行为:

shell_exec("echo -ne '######      30%'\r");

但是没有任何东西打印到屏幕上。

我的猜测是这是因为 STDOUT 不正确,还是我必须像 echo 一样回显?

echo shell_exec("echo -ne '######      30%'\r");

【问题讨论】:

    标签: php shell echo command-line-interface shell-exec


    【解决方案1】:

    要在 php shell 脚本中使用它,您根本不需要执行任何 shell 命令。只需回显以\r 结尾的输出

    echo "######      30%\r";
    

    示例脚本:

    <?php
    for ($i = 0; $i < 100; $i += 5) {
      $bar = str_repeat("#", $i/10);
      echo "$i% $bar \r";
      sleep(1);
    }
    echo "\n";
    ?>
    

    【讨论】:

    • 更改 $i &lt;= 100 否则我猜脚本将以 95% 结束
    • 无所谓,只是一个例子
    • 我很好奇 PHP 回声工作的天气,因为我无法从系统的回声中设置 -ne。我应该尝试过.. =)
    • 你可以查一下-ne 做了什么。 bash echo 命令总是在末尾添加\n。 -n 省略尾随换行符。 -e 启用反斜杠转义的解释。没有它,\r 将不起作用。 PHP 回显不需要这些选项。
    【解决方案2】:

    PHP 命令行界面中的进度条有一个很好的例子:http://brian.moonspot.net/php-progress-bar

    直接在PHP中完成,无需系统调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多