Algorithm 数字验证

Algorithm 数字验证,algorithm,bash,Algorithm,Bash,使用时,我们需要找出一个数字是否大于10,以便决定是否应添加数字以继续验证过程。有人知道如何将其以非函数的方式放入脚本中吗?如果变量为n,则可以测试其长度${n}是否大于1,如果大于1,则将数字相加,否则只需将其传递,例如: $ n=14; test ${#n} -gt 1 && echo $((${n:0:1} + ${n:1:1})) || echo $n 5 $ n=8; test ${#n} -gt 1 && echo $((${n:0:1} + ${n:

使用时,我们需要找出一个数字是否大于10,以便决定是否应添加数字以继续验证过程。有人知道如何将其以非函数的方式放入脚本中吗?

如果变量为
n
,则可以测试其长度
${n}
是否大于1,如果大于1,则将数字相加,否则只需将其传递,例如:

$ n=14; test ${#n} -gt 1 && echo $((${n:0:1} + ${n:1:1})) || echo $n
5
$ n=8; test ${#n} -gt 1 && echo $((${n:0:1} + ${n:1:1})) || echo $n
8
一个简单的方法: 取模9:

$ echo $(( inputnum % 9 ))
e、 g


但问题是你不知道它是哪个号码。。。该算法说,如果一个数字的双精度超过10,那么您应该使用的数字是其数字的加法。。。但你不知道是1011121315161718还是19。这就是为什么我问是否有一个脚本,无论数字是什么,都要加上它,直到它的数字总和小于10。如果数字大于100呢?@anishsane根据算法,数字永远不会大于9*2@mVChr我想你说的是对的,谢谢你的回答。。。但问题是,我在用Luhn算法进行信用卡验证时使用的方法是,数字之和不能小于0或大于20,所以如果任何数字超过10,我意识到从中减去9就足够了,结果将是数字的加法,肯定会小于10。。。但再次感谢您抽出时间回答:)
$ inputnum=14; echo $(( inputnum % 9 ))
5

$ inputnum=8; echo $(( inputnum % 9 ))
8