web-dev-qa-db-fra.com

Barre de progression et sortie Zenity

J'ai écrit ce petit script:

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

Je veux lire la réponse du processus, quel qu’il soit, et montrer une barre de progression pulsante dans l’intervalle. Le problème est que je ne lis aucune réponse à la fin. Je pense que tous les résultats du processus précédent sont envoyés à zenity.

3
nunzio13n

Euh, non, c'est faux. Vous affectez quelque chose à la variable $response puis vous dirigez cette affectation vers zenity. Essayer

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

De cette façon, la sortie sera stockée dans le fichier /tmp/response.txt, que vous pourrez ensuite lire dans une variable.

2
January

J'avais le même problème et je ne voulais pas créer de fichier temporaire. Ma solution était donc:

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

response=$(process)

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