Оператор Bash if с несколькими переменными

Здравствуйте, я пытаюсь сделать простой скрипт bash, и я очень новичок в этом.

С заявлением if я пытаюсь считать как часы.

Таким образом, вывод будет, например, 16:59:58, 16:59:59, 17:00:00.

Секунды и минуты работают, однако первый оператор if не работает.

Когда он попадает в 23:59:59, он должен идти в 00:00:00, а в 24:60:00

Любая помощь?

if [[ "$hours" -eq 23 && "$minutes" -eq 60 && "$seconds" -eq 60 ]]
then
    seconds=0
    minutes=0
    hours=0
    ((date++))
else
    if [[ "$minutes" -eq 60 ]]
    then
        minutes=00
        ((hours++))
    else
        if [[ "$seconds" -eq 60 ]]
        then
            seconds=00
            ((minutes++))
        fi
    fi
fi

Всего 1 ответ


Работайте от поля самого низкого порядка вверх вместо тестирования всех переменных.

((seconds++))
if [[ $seconds -eq 60 ]]
then 
    seconds=0
    ((minutes++))
fi
if [[ $minutes -eq 60 ]]
then
    minutes=0
    ((hours++))
fi
if [[ $hours -eq 24 ]]
then
    hours=0
    ((date++))
fi

Есть идеи?

10000