Вы хотите вернуться и изменить вывод на экран позже.
В общем случае это очень сложно, но вы можете значительно упростить его, убедившись, что выводимый вами текст не прокручивает экран втаким образом, что трудно предсказать, где должна быть сделана поправка.
В этом примере это делается путем предварительной очистки экрана, так что любой дополнительный вывод вряд ли будет прокручиваться. Затем он может обновлять по координатам:
#!/bin/bash
check() {
sleep 3
tput sc # Save cursor
tput cup 1 14 # Set y,x coordinates
printf '%s' "Found"
tput rc # Restore cursor
}
check &
clear # Clear screen so we know where we are
echo "Starting"
echo "Let's check: "
echo "Ending"
wait
Это показывает:
Starting
Let's check:
Ending
в течение трех секунд, а затем обновляет его до:
Starting
Let's check: Found
Ending
Альтернативные подходы включают:
- Сохранение нужных данных на экране в виде строки и просто очистка + запись всякий раз, когда вы хотите обновить полноэкранный режим
- Отслеживание количества строк, которые вы пишете, затем использованиеANSI-команду «курсор вверх» (
tput cuu
), чтобы подняться туда, где, по вашему мнению, будет строка для исправления.