내가 생성 한 (19 자리) 일련 번호 :Luhn 순차 번호를 생성하고이를 Linux에 저장하는 방법은 무엇입니까? 이 같은
seq 1234496713247997000 1234496713247998000 > seq_numbers.txt
후 온라인으로 대해 검증 luhn 검사기를 사용하여. 두 단계 접근법을 수행하는 대신, 어떻게하면 bash 스크립트와 같이 한 번에 모든 작업을 수행하고 올바른 숫자 만 파일에 출력 할 수 있습니까?
내가 생성 한 (19 자리) 일련 번호 :Luhn 순차 번호를 생성하고이를 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)
에 있으며 다른 시스템에서는 테스트하지 않았습니다.
피씨 : 책임은 그것을 사용하십시오!
커맨드 라인에서'luhn' 검사기를 어떻게 호출합니까? – Inian
잘 모르겠다면 위의 질문을 다시 작성하여 bash 파일 – Hopelessone
을 시도 했습니까? 여기서 우리 중 대부분은 코드 개선에 도움을 주지만 짧은 주문을받지 않은 프로그래밍 직원 으로서는 덜 행복합니다. 지금까지의 작업을 [MCVE] (http://stackoverflow.com/help/mcve)에서 보여 주신 결과와 기대 한 결과를 보여 주시면 해결하도록 도와 드리겠습니다. – ghoti