Предел числа Баша?

я попросилвопрос ранее это включало извлечение больших чисел из текстового файла и помещение их в другой файл. Он должен был захватить каждое простое число вплоть до первого простого после 2 ^ 32, и по какой-то причине этот скрипт перестал работать.

#!/bin/bash
n=4294967296
last=0
while read number
    do
    if [ $last -gt $n ]
    then break
    fi
    echo $number
last=$number
done < primes.txt > primes2.txt

Это закончилось циклом через эти 11 чисел:

4232004449  
4232004479  
4232004493  
4232004509  
4232004527  
4232004533  
4232004559  
4232004589  
4232004593  
4232004613  
004437

Исходный файл не имел004437 в нем, и мой Bash будет обрабатывать числа над8999999999999999999

Кто-нибудь знает, почему это произошло?

64-разрядная версия Ubuntu 10.04, 16 ГБ ОЗУ, 8 ядер с частотой 3,60 ГГц
GNU bash, версия 4.1.5 (1) -релиз (x86_64-pc-linux-gnu)

Обновить:

После загрузки и компиляции «фиксированного» bash, предоставленного jfgagne, и ссылки на него в моем bash-скрипте, он ошибся в том же месте. Используя значительно более быстрый эквивалент perl из моего первоначального основного вопроса, я получил некоторые размеры файлов из ls -al:

        11  next_prime (just to make sure this was counting bytes accurately)
2147483659  primes2.txt
2147483670  one_too_many

2147483659 = 2 ^ 31 + 11

Размер следующего простого числа (4232004631) составляет 11 байт. Содержит все простые числа до4232004613, Я также понял, что004437 идет от конца простого в нижней части этого цикла ошибок (4232004437). Кажется, что-то пытается продвинуться, но застрял.

Ответы на вопрос(1)

Ваш ответ на вопрос