Rechner in der Bash
-
Hallo Forum,
es gab doch in der Linux Shell ein Rechenprogramm. Das hat man gestartet und man konnte dann 3+4 und Enter eingeben und hat dann 7 in der nächsten Zeile erhalten. Wie hieß das? Geht das vielleicht auch einfacher? Ohne die Bash zu verlassen? Also:
$ myprg 3+4
7
$Vielen Dank
-
bc
edit: Und wenn man's von der Kommandozeile benutzen will, leitet man halt die Standardeingabe entsprechend um, zum Beispiel so:
echo '5*7' | bc
-
calc oder bc
-
myprg $((3+4))
-
Für simple Rechnungen gibt es auch die arithmetic expansion: $(( 1 + 2 ))
oder: expr 1 + 2Vorteil: expr bzw. arithmetic expansion funktionieren in einer bash-shell immer, bc oder calc muss man erst installieren.
-
bc war was ich gesucht habe. calc ist jedoch viel besser. "calc 3+7" geht nämlich auf der Shell.
Vielen Dank

-
Stimmt, "echo $((156/5))" geht auch.
-
----- schrieb:
Stimmt, "echo $((156/5))" geht auch.
Statt "echo $((156/5))" geht auch "expr 156 / 5", was manchmal einfacher zu lesen ist.
-
Ich verwend Python. Auszug aus meiner .bashrc:
? () { python -c "print $*"; }damit geht dann:
$ ? 2+3 5 $ ? 2**5 32 $ ? "[x**2 for x in range(10)]" [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
-
Blue-Tiger schrieb:
Ich verwend Python. Auszug aus meiner .bashrc:
? () { python -c "print $*"; }damit geht dann:
$ ? 2+3 5 $ ? 2**5 32 $ ? "[x**2 for x in range(10)]" [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]erinnert mich an BASIC damals, da ging das auch

-
Blue-Tiger schrieb:
Ich verwend Python. Auszug aus meiner .bashrc:
... $ ? "[x**2 for x in range(10)]" [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Kann man da eigentlich irgendwie die Anführungszeichen los werden?
-
------ schrieb:
bc war was ich gesucht habe. calc ist jedoch viel besser. "calc 3+7" geht nämlich auf der Shell.
Vielen Dank

calc ist bei meinem System nicht installiert, aber bc ist eigentlich ueberall dabei. Wie bc mit Kommandpziele funzt, wurde aber schon gesagt.
-
µngbd schrieb:
Blue-Tiger schrieb:
Ich verwend Python. Auszug aus meiner .bashrc:
... $ ? "[x**2 for x in range(10)]" [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Kann man da eigentlich irgendwie die Anführungszeichen los werden?
Die bash will die Klammern selbst parsen, wenn du die escapst gehts:
$ ? [x**2 for x in range\(10\)] [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]Vllt. auch noch witzig: Wenn man die Zeile umaendert kann man mathematische Funktionen/Konstanten verwenden:
? () { python -c "from math import *; print $*"; }Dann klappt auch
$ ? "sin(pi/2)" 1.0
-
Blue-Tiger schrieb:
Die bash will die Klammern selbst parsen, wenn du die escapst gehts:
[...]Daran liegts!
Schade eigentlich. Die Sache gefällt mir aber auch so.
Die Anführungszeichen werd ich schon noch los...Hmm, aber blöd eigentlich: wenn es ein
$*gibt, dann hat die Bash die Zeile (und damit die Klammern) schon geparst. Kann man die nicht irgendwie ein wenig more lazy machen?
-
Blue-Tiger schrieb:
Ich verwend Python. Auszug aus meiner .bashrc:
? () { python -c "print $*"; }sehr nette Idee. Bei zsh könnte man zumindest noch mit noglob die wildcard-auswertung ausstellen. Ich hoffe es gibt auch etwas ähnliches, dass den anderen krempel wie ()?!& unterdrückt.