Zenity 进度条和输出

Zenity 进度条和输出

我写了这个小脚本:

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

我想读取进程的响应(无论它是什么),同时显示一个脉动的进度条。问题是我在最后没有读取任何响应。我想是因为上一个进程的所有输出都发送到了 zenity。

答案1

嗯,不,这是错的。你给变量赋值$response,然后管道这项作业zenity。尝试

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

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

答案2

我遇到了同样的问题并且不想创建临时文件,所以我的解决方案是:

#!/bin/bash
FIFO=$(mktemp -u)
mkfifo $FIFO
(cat $FIFO | zenity --progress --pulsate --auto-close) &

response=$(process)

echo 'Bye bye' > $FIFO
rm -f $FIFO

相关内容