как сделать процесс помещения вывода команды в переменную фоновым процессом

На самом деле моя цель - показать "Loading...", пока другая команда тратит время на вывод. Итак:

#When running this, it takes about 3 seconds before it outputs something into the terminal.
deluge-console status

#I want to show "Loading..." in those 3 seconds.
#This was my plan:
unset output
output=$(deluge-console status) &
until [[ -n "$output" ]]
do
    echo "Loading..."
    sleep 1s
done
echo "$output"

Выполнение $(...) & показывает Loading... бесконечно. Выполнение $(... &) не показывает Loading..., а просто ждет команды для вывода и после этого выводит $output.

Как заставить это работать?

0
задан 18 April 2021 в 16:19

1 ответ

Здесь вы запустили deluge-console status во вспомогательной оболочке, а затем поместили присвоение переменной выхода в фоновом режиме с помощью & ] в конце этой строки.

Это, конечно, не то, что вы хотели: он ждет, пока команда deluge-console status не завершится (потому что это то, что делает $ (...) ), что может занять несколько секунд, а затем в фоновом режиме выполняет единственную вещь, которая в любом случае является быстрой (присвоение выходных данных этой команды переменной).

0
ответ дан 23 April 2021 в 23:21

Другие вопросы по тегам:

Похожие вопросы: