Хитрость заключается в том, чтобы не использовать 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
или подобное в этом случае.