Shell 脚本 - 管道和重定向

Posted

技术标签:

【中文标题】Shell 脚本 - 管道和重定向【英文标题】:Shell Scripting - pipes and redirection 【发布时间】:2009-07-02 18:22:08 【问题描述】:

我正在使用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

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

谢谢, 马特

【问题讨论】:

【参考方案1】:

这行得通:

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

【讨论】:

【参考方案2】:

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

像这样:

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

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

【讨论】:

以上是关于Shell 脚本 - 管道和重定向的主要内容,如果未能解决你的问题,请参考以下文章

Shell编程规范与变量

Linux shell编程:管道和重定向

shell脚本基础!

Linux管道及重定向

在centos系统shell脚本中cat和重定向符号<<EOF结合使用的注意事项

linux进程管道和重定向