Como definir uma função 'bc' para uso posterior?

8

Eu sempre achei o tipo bc misterioso e intrigante. Foi um dos os programas Unix originais. E é uma linguagem de programação por si só. Então, de bom grado, tomo qualquer chance que possa encontrar para usá-lo.

Como bc não parece incluir uma função fatorial, eu quero definir um assim:

define fact(x) {
  if (x>1) {
    return (x * fact(x-1))
  }
  return (1)

}

Mas ... eu não posso reutilizar isso, posso?

Eu gostaria de poder fazer algo como

me@home$ bc <<< "1/fact(937)"
    
por ixtmixilix 29.06.2012 / 20:10

1 resposta

11

Salve suas definições de função em um arquivo como factorial.bc e, em seguida, execute

bc factorial.bc <<< '1/fact(937)'

Se você quiser que a função fatorial seja sempre carregada quando executar bc , sugiro agrupar o binário bc com um script ou função shell ( se um script ou função é melhor depende sobre como você deseja usá-lo).

Script ( bc , para colocar em ~/bin )

#!/bin/sh

bc ~/factorial.bc << EOF
$@
EOF

Função (para colocar no arquivo rc do shell)

bc () {
    bc ~/factorial.bc << EOF
    $@
    EOF
}

Das bc especificações POSIX :

It shall take input from any files given, then read from the standard input.

    
por 29.06.2012 / 20:20

Tags