Я не утверждаю правдивость алгоритма проверки luhn снизу. Это ссылка с этой страницы Rosetta Code.
Вы можете использовать его как
#!/bin/bash
function luhn_validate
{
num=$1
shift 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)))
}
for i in $(seq 1234496713247997000 1234496713247998000)
do
if luhn_validate "$i"; then
echo "$i is valid"
else
echo "$i is not valid"
fi
done
Вы можете поместить его в сценарий как script.sh
и установить разрешения на выполнение chmod +x script.sh
и работать как
$ ./script.sh
Я был в состоянии сделать его работу на GNU bash, version 4.3.46(2)-release (x86_64-pc-msys)
и не тестировали его на других системах.
P.S .: Используйте его на свой страх и риск!
Как вы вызываете «luhn' checker в командной строке? – Inian
не уверен, я переписал вопрос выше, поэтому он говорит bash file – Hopelessone
Что вы пробовали? Большинство из нас с удовольствием помогут вам улучшить свой код, но они менее счастливы в качестве неоплачиваемого персонала по заказу. Покажите нам свою работу в [MCVE] (http://stackoverflow.com/help/mcve), результат, который вы ожидали, и полученные результаты, и мы поможем вам разобраться. – ghoti