Хитрость заключается в том, чтобы не использовать bashдля выполнения сложения 1 .
Сначала прочитайте каждое число в отдельную переменную. Это предполагает, что файлы содержат только номер и никакой другой информации.
a="$(<a.txt)"
b="$(<b.txt)"
Затем используйте bcкалькулятор, чтобы получить результат:
bc <<<"$a + $b"
bc является "арифметическим языком произвольной точности и калькулятором".
Чтобы сохранить результат в переменной c:
c="$( bc <<<"$a + $b" )"
Если <<<синтаксис кажется странным (он называется «здесь-строкой» и является расширением синтаксиса оболочки POSIX, поддерживаемого bashнекоторыми другими оболочками), вместо этого вы можете использовать printfдля отправки дополнения bc:
printf '%s + %s\n' "$a" "$b" | bc
И сохраняем результат cснова:
c="$( printf '%s + %s\n' "$a" "$b" | bc )"
1 Использование bashдля сложения двух чрезвычайно больших чисел потребует реализации в bashскрипте подпрограммы для выполнения арифметики произвольной точности . Это вполне выполнимо, но обременительно и не нужно, поскольку каждый Unix поставляется с таким, bcкоторый уже предоставляет вам эту услугу относительно простым и доступным способом.
pythonили подобное в этом случае.