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