Я хочу реализовать истекшие секунды показа индикатора выполнения в ударе. Для этого я должен стереть последнюю строку, показанную на экране ("четкая" команда стирает весь экран, но я должен стереть только строку индикатора выполнения и заменить его новой информацией).
Конечный результат должен быть похожим:
$ Elapsed time 5 seconds
Затем после 10 секунд я хочу заменить это предложение (в том же положении на экране):
$ Elapsed time 15 seconds
введите возврат каретки с помощью \ r
seq 1 1000000 | while read i; do echo -en "\r$i"; done
из man echo:
-n do not output the trailing newline
-e enable interpretation of backslash escapes
\r carriage return
Используйте символ возврата каретки:
echo -e "Foo\rBar" # Will print "Bar"
Самый простой способ - использовать \ r
персонаж, наверное.
Недостатком является то, что у вас не может быть полных строк, так как это очищает только текущую строку.
Простой пример:
time=5
echo -n "Elapsed $time seconds"
sleep 10
time=15
echo -n "Elapsed $time seconds"
echo "\nDone"