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.
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.
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