Zenity индикатор выполнения и вывод

Я написал этот небольшой сценарий:

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

Я хочу прочитать реакцию процесса, что бы это ни было, и показать пульсирующий индикатор выполнения в это время. Проблема в том, что я не читаю никакого ответа в конце. Я думаю, потому что все результаты предыдущего процесса отправляются в zenity.

3
задан 1 April 2017 в 19:00

2 ответа

У меня была та же проблема, и я не хотел создавать временный файл, поэтому мое решение было:

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

response=$(process)

echo 'Bye bye' > $FIFO
rm -f $FIFO
0
ответ дан 1 April 2017 в 19:00

Хм, нет, это неправильно. Вы назначаете что-то переменной $response, а затем передаете это назначение в zenity. Попробуйте

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

Таким образом, вывод будет сохранен в файле /tmp/response.txt, который вы позже сможете прочитать в переменную.

0
ответ дан 1 April 2017 в 19:00

Другие вопросы по тегам:

Похожие вопросы: