我产生(19位)序列号这样的:如何生成Luhn Sequential数字并将它们保存在Linux中?
seq 1234496713247997000 1234496713247998000 > seq_numbers.txt
,然后确认他们的在线使用LUHN检查。而不是采取两步法,我怎样才能像bash脚本一样,一次性完成这项工作,并只输出有效数字到文件中?
我产生(19位)序列号这样的:如何生成Luhn Sequential数字并将它们保存在Linux中?
seq 1234496713247997000 1234496713247998000 > seq_numbers.txt
,然后确认他们的在线使用LUHN检查。而不是采取两步法,我怎样才能像bash脚本一样,一次性完成这项工作,并只输出有效数字到文件中?
我没有从下面声明luhn checker算法的真实性。这是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'检查器? – Inian
不知道,我会重新写上面的问题,所以它说bash文件 – Hopelessone
你有什么尝试?我们大多数人都很乐意帮助你改进你的代码,但是却不太乐意担任短期无偿编程人员。在[MCVE](http://stackoverflow.com/help/mcve)中向我们展示您的工作,您期待的结果以及您获得的结果,我们将帮助您弄清楚。 – ghoti