bc ist ein Programm für arithmetische Berechnungen mit beliebiger Genauigkeit und eine eigene, C-ähnliche Programmiersprache. Es wurde von Lorinda Cherry und Robert Morris an den Bell Labs entwickelt, erschien erstmals in Version 6 von AT&T UNIX (1975) und ist heute als POSIX-Standard (IEEE Std 1003.1) Teil jedes Linux- und BSD-Systems. bc ist der Infix-Präprozessor des RPN-Rechners dc – beide stammen von demselben Entwicklerpaar.

Grundlegende Nutzung

echo "5 + 3" | bc          # 8
echo "scale=5; 22 / 7" | bc  # 3.14285
echo "obase=16; 255" | bc    # FF
bc -l                       # mit Math-Bibliothek starten

Die wichtigsten Anweisungen und Variablen

  • scale – Anzahl der Nachkommastellen, ibase/obase – Ein- und Ausgabebasis
  • last – Ergebnis des letzten Ausdrucks (GNU-Erweiterung)
  • quit – bc beenden, sqrt(x) – Quadratwurzel, length(x) – Anzahl der Ziffern
  • define f(x) { ... } – eigene Funktionen, auto – lokale Variablen
  • if (Bedingung) ..., while (Bedingung) ..., for (Init; Test; Schritt) ... – Kontrollfluss
  • break, continue, return – Sprunganweisungen
  • Operatoren: + - * / % ^, Inkrement ++/--, Vergleiche, Logik und ternärer Operator ?

Math-Bibliothek (bc -l)

Mit der Option -l stehen zusätzliche Funktionen bereit: s(x) Sinus, c(x) Kosinus, a(x) Arkustangens, l(x) natürlicher Logarithmus, e(x) Exponentialfunktion und j(n,x) Bessel-Funktion.

Beispiel: Funktion definieren

define fak(n) {
  if (n <= 1) return 1
  return n * fak(n - 1)
}
fak(5)

Praxis-Tipps

  • Kommentare werden wie in C mit /* ... */ geschrieben.
  • In Skripten nutzt man bc am einfachsten über echo "..." | bc oder Heredoc; GNU bc unterstützt zusätzlich print und Arrays.
  • Im Gegensatz zu dc arbeitet bc mit vertrauter Infix-Notation – ideal für Umrechnungen in Basis-2/8/16 in Shell-Skripten.

Verwandte Grundlagen: QBasic.