На самом деле моя цель - показать "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.
Как заставить это работать?
Здесь вы запустили deluge-console status
во вспомогательной оболочке, а затем поместили присвоение переменной выхода
в фоновом режиме с помощью &
] в конце этой строки.
Это, конечно, не то, что вы хотели: он ждет, пока команда deluge-console status
не завершится (потому что это то, что делает $ (...)
), что может занять несколько секунд, а затем в фоновом режиме выполняет единственную вещь, которая в любом случае является быстрой (присвоение выходных данных этой команды переменной).