私はこの小さなスクリプトを書きました:
response=$(process ...) | zenity --progress --pulsate
echo $response
プロセスの応答を読み、その間、脈動する進行状況バーを表示します。問題は、最後に応答を読み取らないことです。前のプロセスからのすべての出力がZenityに送信されるためだと思います。
ええ、いや、これは間違っています。変数$response
に何かを割り当て、次にこの割り当てをzenityにパイプします。試して
process | tee /tmp/response.txt | zenity --progress --pulsate --auto-close
response=$( cat /tmp/response.txt )
これにより、出力はファイル/tmp/response.txt
に保存され、後で変数に読み込むことができます。
私は同じ問題を抱えていて、一時ファイルを作成したくなかったので、私の解決策は次のとおりでした:
#!/bin/bash
FIFO=$(mktemp -u)
mkfifo $FIFO
(cat $FIFO | zenity --progress --pulsate --auto-close) &
response=$(process)
echo 'Bye bye' > $FIFO
rm -f $FIFO