Я написал этот небольшой сценарий:
response=$(process ...) | zenity --progress --pulsate
echo $response
Я хочу прочитать реакцию процесса, что бы это ни было, и показать пульсирующий индикатор выполнения в это время. Проблема в том, что я не читаю никакого ответа в конце. Я думаю, потому что все результаты предыдущего процесса отправляются в zenity.
У меня была та же проблема, и я не хотел создавать временный файл, поэтому мое решение было:
#!/bin/bash
FIFO=$(mktemp -u)
mkfifo $FIFO
(cat $FIFO | zenity --progress --pulsate --auto-close) &
response=$(process)
echo 'Bye bye' > $FIFO
rm -f $FIFO
Хм, нет, это неправильно. Вы назначаете что-то переменной $response
, а затем передаете это назначение в zenity. Попробуйте
process | tee /tmp/response.txt | zenity --progress --pulsate --auto-close
response=$( cat /tmp/response.txt )
Таким образом, вывод будет сохранен в файле /tmp/response.txt
, который вы позже сможете прочитать в переменную.