@ilyablbnv
Студент.Энтузиаст

Что делает цикл for в данной функции bash?

Доброго времени суток! Помогите разобраться, что происходит в цикле for(реализация алгоритма Луна для банковских карточек). Спасибо

function validate {
num=$1 

   len=${#num} 

    is_odd=1 
    sum=0
     
    for((t = len - 1; t >= 0; --t)) {
        digit=${num:$t:1} #????

        if [[ $is_odd -eq 1 ]]; then 
            sum=$(( sum + $digit ))
        else
            sum=$(( $sum + ( $digit != 9 ? ( ( 2 * $digit ) % 9 ) : 9 ) ))
        fi

        is_odd=$(( ! $is_odd ))
    }

    # NOTE: returning exit status of 0 on success
    return $(( 0 != ( $sum % 10 ) ))
}
  • Вопрос задан
  • 369 просмотров
Пригласить эксперта
Ответы на вопрос 2
@abcd0x00
Что делает цикл for в данной функции bash?

Он просто берёт из num каждый символ в обратном порядке.

digit=${num:$t:1} #????

[guest@localhost ~]$ s=abcd
[guest@localhost ~]$ echo "${s:0:3} ${s:0:2} ${s:2:1}"
abc ab c
[guest@localhost ~]$
Ответ написан
customtema
@customtema
arint.ru
Переменная suma не задекларирована.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы