私はこのような(19桁)連番生成していました:Luhn Sequential番号を生成してLinuxに保存するには?
seq 1234496713247997000 1234496713247998000 > seq_numbers.txt
をし、その後のLuhnチェッカーを使用してオンラインそれらを検証します。 2段階アプローチをとるのではなく、どうやって同じようなbashスクリプトで実行すればいいですか?そして、有効な数値だけをファイルに出力しますか?
私はこのような(19桁)連番生成していました:Luhn Sequential番号を生成してLinuxに保存するには?
seq 1234496713247997000 1234496713247998000 > seq_numbers.txt
をし、その後のLuhnチェッカーを使用してオンラインそれらを検証します。 2段階アプローチをとるのではなく、どうやって同じようなbashスクリプトで実行すればいいですか?そして、有効な数値だけをファイルに出力しますか?
私は、以下からルーンチェッカーアルゴリズムの真実性を主張しません。このRosetta Codeページからの参考情報です。
あなたが、私はそれを動作させることができたあなたはscript.sh
としてスクリプトにそれを置くと権限chmod +x script.sh
を実行する設定と
$ ./script.sh
として実行することができます
#!/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
として使用することができます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