web-dev-qa-db-ja.com

Zenityプログレスバーと出力

私はこの小さなスクリプトを書きました:

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

プロセスの応答を読み、その間、脈動する進行状況バーを表示します。問題は、最後に応答を読み取らないことです。前のプロセスからのすべての出力がZenityに送信されるためだと思います。

3
nunzio13n

ええ、いや、これは間違っています。変数$responseに何かを割り当て、次にこの割り当てをzenityにパイプします。試して

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

これにより、出力はファイル/tmp/response.txtに保存され、後で変数に読み込むことができます。

2
January

私は同じ問題を抱えていて、一時ファイルを作成したくなかったので、私の解決策は次のとおりでした:

#!/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