Bash if оператор с несколькими переменными - PullRequest
0 голосов
/ 10 февраля 2020

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

С помощью оператора if я пытаюсь считать как часы.

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

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

Когда он попадает в 23:59:59, он предназначен для go до 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 Ответ

1 голос
/ 10 февраля 2020

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

((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
...