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 Ausgabebasislast– Ergebnis des letzten Ausdrucks (GNU-Erweiterung)quit– bc beenden,sqrt(x)– Quadratwurzel,length(x)– Anzahl der Zifferndefine f(x) { ... }– eigene Funktionen,auto– lokale Variablenif (Bedingung) ...,while (Bedingung) ...,for (Init; Test; Schritt) ...– Kontrollflussbreak,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 "..." | bcoder Heredoc; GNU bc unterstützt zusätzlichprintund 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.