2016-03-02 2 views
2

Я ищу альтернативу очистке или лучший способ написать сценарий таймера, который я создал. По сути сценарий отсчитывается с 20 минут, а затем перезапускается с 20 минут. То, что я хотел бы сделать, - это избегать мигающего терминала, который возникает каждый раз, когда вызывается clear, что происходит каждую секунду. Не хватает ли лучшего способа написать это? Или я в основном застрял в ясном и мигающем терминале?Таймер Сценарий без ясности

totsecs=1200 

currsecs=0 

while true; do 

    currsecs=$(($currsecs+1)) 

    min=$((totsecs-currsecs)) 
    min=$((min/60)) 

    sec=$((totsecs-currsecs)) 
    sec=$((sec%60)) 

    printf "%02d:%02d\n" $min $sec 

    if [ $currsecs -eq $totsecs ]; then 
     currsecs=0 
    fi 

    sleep 1 

    clear 

done  

ответ

1

Используйте возврат каретки вместо новой строки, чтобы вернуть курсор к началу той же линии.

while true; do 
    ((currsecs++)) 
    ((min = (totsecs - currsecs)/60)) 
    ((sec = (totsecs - currsecs) % 60)) 
    printf "\r%02d:%02d" $min $sec 
    ((currsecs == totsecs)) && currsecs=0 
    sleep 1 
done  
+0

О, слава Богу. Мой терминал благодарит вас, как и я. – barefly

Смежные вопросы