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.