Ich verwende ein serielles Terminal, um Eingaben in unser Laborexperiment zu liefern. Ich fand das mit
$ echo "5X5"
Gibt nur eine Zeichenfolge von zurück "5X5"
. Gibt es einen Befehl zum Ausführen einer Multiplikationsoperation?
quelle
Ich verwende ein serielles Terminal, um Eingaben in unser Laborexperiment zu liefern. Ich fand das mit
$ echo "5X5"
Gibt nur eine Zeichenfolge von zurück "5X5"
. Gibt es einen Befehl zum Ausführen einer Multiplikationsoperation?
Ja, Sie können die integrierte arithmetische Erweiterung$(( ))
von bash verwenden , um einige einfache Berechnungen durchzuführen
$ echo "$((5 * 5))"
25
Überprüfen Sie den Abschnitt Shell Arithmetic im Bash Reference ManualEine vollständige Liste der Operatoren finden .
Der Vollständigkeit halber, wie andere betonten, wenn Sie willkürliche Präzision benötigen bc
oder dc
besser wären.
Für fortgeschrittenere und präzisere Mathematik sollten Sie bc (1) verwenden.
echo "3 * 2.19" | bc -l
6.57
Bash unterstützt die arithmetische Erweiterung mit $(( expression ))
. Beispielsweise:
$ echo $(( 5 * 5 ))
25
Eine Reihe von Dienstprogrammen bietet Arithmetik, einschließlich bc und expr .
$ echo '5 * 5' | /usr/bin/bc
25
$ /usr/bin/expr 5 \* 5
25
Die klassische Lösung lautet:
expr 5 \* 5
Eine weitere schöne Option ist:
echo 5 5\*p | dc
Beide Lösungen funktionieren nur mit ganzzahligen Operanden.
dc
arbeitet mit schwimmern. Versuchen Sie esecho '4 k 50 7 / p' | dc
. Die Ausgabe ist7.1428
. Derk
Befehl legt die Genauigkeit fest.k
. Ich erinnere mich sicherlich, dass die Standardgenauigkeit 0 war (Kürzung auf Ganzzahl). Erinnere ich mich falsch oder ist es einfach so, dass neuere Implementierungen das Verhalten geändert haben?dc
Laufe der Jahre nur selten verwendet, da ich algebraischer und weniger RPN bin, also erinnere ich mich nicht. Auf einem GNU-System, das ich verwende, ist der Standardwert 0. Eine alte (1993) FreeBSD-man
Seite erwähnt, dass der Standardwert Null ist, ältere BSD-man
Seiten jedoch nicht.echo '4 k 50.5 7 / p' | dc
funktioniert (Ausgabe :)7.2142
.Eine einfache Shell-Funktion (keine Sedierung erforderlich) sollte den Trick der Interpretation von '5X5' ausführen.
quelle
Ich benutze diese Funktion, die
bc
Gleitkommaberechnungen verwendet und somit unterstützt:Beispiel:
Bashs arithmetische Erweiterung unterstützt keine Floats (Korn Shell und Zsh jedoch).
Beispiel:
quelle
Ich habe ein einfaches Skript, das ich dafür benutze:
me@mycomputer:~$ cat /usr/local/bin/c
Es ändert sich
x
zu,*
da*
es sich um ein Sonderzeichen in der Shell handelt. Verwenden Sie es wie folgt:c 5x5
c 5-4.2 + 1
c '(5 + 5) * 30'
(Sie müssen immer noch Anführungszeichen verwenden, wenn der Ausdruck Klammern enthält.)quelle
tr
kann verwendet werden, um eine Zeichenzuordnung für mehrere Zeichen durchzuführen.Wenn Sie Python mögen und die Option haben, ein Paket zu installieren, können Sie dieses von mir erstellte Dienstprogramm verwenden .
quelle