O truque é não usar bash
para realizar a adição 1 .
Primeiro, leia cada número em uma variável separada. Isso pressupõe que os arquivos contêm apenas um número e nenhuma outra informação.
a="$(<a.txt)"
b="$(<b.txt)"
Em seguida, use a calculadora bc
para obter o resultado:
bc <<<"$a + $b"
bc
é uma "linguagem e calculadora aritmética de precisão arbitrária".
Para armazenar o resultado em uma variável c
:
c="$( bc <<<"$a + $b" )"
Se a sintaxe <<<
parecer estranha (é chamada de "string aqui" e é uma extensão da sintaxe POSIX suportada por bash
e alguns outros shells), você pode usar printf
para enviar a adição a bc
:
printf '%s + %s\n' "$a" "$b" | bc
E armazenar o resultado em c
novamente:
c="$( printf '%s + %s\n' "$a" "$b" | bc )"
1 Usar bash
para realizar a adição de dois números extremamente grandes exigiria a implementação, no script bash
, de uma rotina para fazer aritmética de precisão arbitrária . Isso é perfeitamente factível, mas pesado e desnecessário, já que todo Unix vem com bc
, que já fornece esse serviço para você de uma forma relativamente fácil e acessível.