O truque é não usar bash
para executar a adição 1 .
Primeiro, leia cada número em uma variável separada. Isso pressupõe que os arquivos contenham apenas um número e nenhuma outra informação.
a="$(<a.txt)"
b="$(<b.txt)"
Em seguida, use a bc
calculadora 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 do shell POSIX suportada por bash
e mais algumas conchas), você pode usar printf
para enviar a adição para bc
:
printf '%s + %s\n' "$a" "$b" | bc
E armazenando o resultado 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 bash
script, de uma rotina para executar aritmética de precisão arbitrária . Isso é perfeitamente factível, mas complicado e desnecessário, pois todos os Unix bc
que já oferecem esse serviço já são fornecidos de maneira relativamente fácil e acessível.
python
ou similar nesse caso.