Zenity进度条和输出

我写了这个小脚本:

response=$(process ...) | zenity --progress --pulsate echo $response 

我希望阅读过程的响应,无论它是什么,并在同时显示一个脉动的进度条。 问题是我最后没有读到任何回复。 我认为因为前一个进程的所有输出都被发送到zenity。

嗯,不,这是错的。 您将某些内容分配给变量$response ,然后将此分配传递给zenity。 尝试

 process | tee /tmp/response.txt | zenity --progress --pulsate --auto-close response=$( cat /tmp/response.txt ) 

这样,输出将存储在文件/tmp/response.txt ,您可以稍后将其读入变量。

我有同样的问题,不想创建临时文件,所以我的解决方案是:

 #!/bin/bash FIFO=$(mktemp -u) mkfifo $FIFO (cat $FIFO | zenity --progress --pulsate --auto-close) & response=$(process) echo 'Bye bye' > $FIFO rm -f $FIFO