Wie definiere ich eine `bc` Funktion für die spätere Verwendung?


8

Ich fand es immer bcmysteriös und faszinierend. Es war eines der ursprünglichen Unix-Programme. Und es ist eine Programmiersprache für sich. Deshalb nutze ich gerne jede Gelegenheit, um es zu nutzen.

Da bc keine Fakultätsfunktion zu enthalten scheint, möchte ich eine wie folgt definieren:

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

}

Aber ... das kann ich dann nicht wiederverwenden, oder?

Ich möchte in der Lage sein, so etwas zu tun

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

Antworten:


11

Speichern Sie Ihre Funktionsdefinitionen in einer Datei wie factorial.bcund führen Sie sie aus

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

Wenn Sie möchten, dass die Fakultätsfunktion beim Ausführen immer geladen wird bc, empfehlen wir Ihnen , die bcBinärdatei mit einem Shell-Skript oder einer Shell-Funktion zu versehen ( ob ein Skript oder eine Funktion am besten geeignet ist, hängt davon ab, wie Sie sie verwenden möchten).

Skript ( bczum Einfügen ~/bin)

#!/bin/sh

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

Funktion (zum Einfügen in die Shell-RC-Datei)

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

Aus den bcPOSIX-Spezifikationen :

Es muss Eingaben von allen angegebenen Dateien entgegennehmen und dann von der Standardeingabe lesen.


Vielleicht können Sie die Datei .bcrc aufrufen? Können Sie mehrere Definitionen in dieselbe Datei einfügen?
— Bernhard

Ja, Sie können jede gültige bc-Syntax in die Datei einfügen. Wie Sie die Datei nennen und wo Sie sie ablegen, liegt ganz bei Ihnen.
— jw013
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.