1

Я нашел здесь в superuser следующий хороший скрипт обратного отсчета, который я мог бы включить в мой .bash_profile:

function countdown(){  
   date1=$((`date +%s` + $1));   
   while [ "$date1" -ne `date +%s` ]; do   
     echo -ne "$(date -u --date @$(($date1 - `date +%s`)) +%H:%M:%S)\r";  
     sleep 0.1  
  done  
}

Я понимаю, что он не работает на OSX из-за различий в команде date . Другой пользователь прокомментировал как таковой, но проблема осталась нерешенной в этом вопросе.

Та же проблема (я думаю) также обсуждается и решается здесь, но я не могу понять, как изменить скрипт обратного отсчета, чтобы использовать это решение.

1 ответ1

3

Лично я бы немного переработал это для удобства чтения (все еще полагаясь на дату GNU)

function countdown(){  
    local now=$(date +%s)
    local end=$((now + $1))
    while (( now < end )); do   
        printf "%s\r" "$(date -u -d @$((end - now)) +%T)"  
        sleep 0.25  
        now=$(date +%s)
    done  
    echo
}

Отображение даты звонков на OSX BSD date (страница руководства здесь)

Похоже, вызов даты GNU

date -u -d @$((end - now)) +%T

переводит на этот вызов даты BSD

date -u -j -f %s $((end - now)) +%T

но это не проверено.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .