【问题标题】:Shell Scripting - pipes and redirectionShell 脚本 - 管道和重定向
【发布时间】:2023-03-04 23:26:02
【问题描述】:

我正在使用CocoaDialog 在执行下载脚本期间提供一些反馈。我希望在我们进行命令操作时呈现一个不确定的进度条。这可以通过在操作期间将文本传送到 CocoaDialog 来实现。

http://cocoadialog.sourceforge.net/documentation.html#progressbar_control

我认为我可以使用一个命令来完成,如下所示:

exec("curl -O $PATH_DOWNLOAD > $PATH_COCOADIALOG progressbar --indeterminate");

但这不起作用。

这是一个更深入的 shell 脚本,它以不同的方式执行它:

http://cocoadialog.sourceforge.net/examples/progressbar.sh.txt

任何提示或技巧表示赞赏。

谢谢,
马特

【问题讨论】:

    标签: bash shell redirect named-pipes


    【解决方案1】:

    这行得通:

    curl -O $PATH_DOWNLOAD 2>&1 | $PATH_COCOADIALOG progressbar --indeterminate
    

    【讨论】:

      【解决方案2】:

      你可以不用命名管道。您提到的 popen/pclose 允许您通过匿名进程与进程通信。只有在处理非相关(父/子)进程时才真正需要命名管道。

      像这样:

      $pipe = popen("| nameOfTheExecuable"); 写($pipe,“某事”); …… pclose($pipe);

      $pipe 是可用于写入子进程标准输入的句柄。

      【讨论】: