Ладно, хорош про винду, ловите еще чтива. Выше в посте когда ставил docker, вылез алерт «WSL DETECTED: We recommend using Docker Desktop for Windows.»
Меня заинтересовал таймер обратного отсчета, который выводился на экране, мол через 20 секунд всё будет ок. Цифры менялись затирая предыдущие, но с нюансом, оставался ведущий ноль.
Ну и чот захотелось на Bash’е такое запилить, ну и запилил:
#!/bin/bash
msg="deadline in: "
row=2
col=2
clear
tput cup $row $col
echo -n "$msg"
tput civis
l=${#msg}
l=$(( l + col ))
for i in {10..01}
do
tput cup $row $l
echo -n "$i"
sleep 1
done
tput cnorm
Запускаем, еее! Пошел отсчет от 10 до 01 с ведущим нулем. Прекрасно!
Из непонятного, рассказываю:
tput cup $row $col= ставим курсор в нужную позициюtput civis- скрываем курсорl=${#msg}- вычисляем длину строки msgl=$(( l + col ))- позиция вывода таймераtput cup $row $l- кидаем курсор в позицию таймераtput cnorm- включаем курсор обратно
Вариант без ведущего нуля:
#!/bin/bash
seconds=10
for ((i=seconds; i>=1; i--))
do
echo -ne "deadline in: $i \033[0K\r"
sleep 1
done
echo -e "\nFuck up!"
Но этот вариант мне не нравится, нет в нем искры, если жать Enter, то таймер перескакивает на новую строку, ну и ведущего нуля нет, фу.
Ладно, кидай в комментарии свои варианты, заценим!








Комментарии