Come definire una funzione `bc` per un uso successivo?


8

Ho sempre trovato bcmisterioso e intrigante. Era uno dei programmi originali Unix. Ed è un linguaggio di programmazione a sé stante. Quindi colgo volentieri ogni possibilità che posso trovare per usarlo.

Dal momento che bc non sembra includere una funzione fattoriale, voglio definirne una in questo modo:

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

}

Ma ... non posso riutilizzarlo, vero?

Vorrei poter fare qualcosa del genere

me@home$ bc <<< "1/fact(937)"

Risposte:


11

Salvare le definizioni delle funzioni in un file simile factorial.bce quindi eseguire

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

Se vuoi che la funzione fattoriale si carichi sempre quando esegui bc, ti suggerirei di avvolgere il file bcbinario con uno script o una funzione shell ( se uno script o una funzione è meglio dipende da come lo vuoi usare).

Script ( bc, da inserire ~/bin)

#!/bin/sh

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

Funzione (per mettere in shell file rc)

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

Dalle bcspecifiche POSIX :

Prende l'input da tutti i file forniti, quindi viene letto dall'input standard.


Forse puoi chiamare il file .bcrc? Puoi mettere più definizioni nello stesso file?
Bernhard,

Sì, puoi inserire qualsiasi sintassi bc valida nel file. Quello che chiami il file e dove lo metti dipende completamente da te.
jw013,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.