Bash-Arithmetik
Eine andere mögliche Lösung besteht darin, eine einfache Funktion für die in Bash integrierte Arithmetik hinzuzufügen. Fügen Sie dies in Ihre .bashrc
Datei ein, um Folgendes zu versuchen:
=() {
echo "$(($@))"
}
Jetzt brauchen Sie nicht einmal $((...))
mehr, =
was natürlich genug erscheint.
Ersatz
Eine andere Sache , wenn Sie wollen noch schneller sein: Sie können es machen ersetzen p
mit +
und x
mit *
. Das wird dafür funktionieren:
=() {
local IFS=' '
local calc="${*//p/+}"
calc="${calc//x/*}"
echo "$(($calc))"
}
= 5 x 5 # Returns 25
= 50p25 # Returns 75
Jetzt brauchst du nicht Shiftmehr, das Einzige, was du tun musst , ist =
Rechnen.
Hexadezimale Ausgabe
Die Ausgabe kann auf Wunsch sowohl dezimal als auch hexadezimal erfolgen. ( Hinweis : Die Verwendung der x
Ersetzung widerspricht der 0x...
Hex-Syntax.)
=() {
local answer="$(($@))"
printf '%d (%#x)\n' "$answer" "$answer"
}
Beispiel:
$ = 16 + 0x10
272 (0x110)
$ = 16**3 + 16**4
69632 (0x11000)
Verwenden bc
Wenn Sie etwas fortgeschrittenere Berechnungen wünschen, können Sie es bc
so weiterleiten:
=() {
local IFS=' '
local calc="${*//p/+}"
calc="${calc//x/*}"
bc -l <<<"scale=10;$calc"
}
= 'sqrt(2)' # Returns 1.4142135623
= '4*a(1)' # Returns pi (3.1415926532)
Die von bereitgestellten Funktionen bc
sind wie folgt (und können von man bc
) gefunden werden:
sqrt ( expression )
The value of the sqrt function is the square root of the expression.
If the expression is negative, a run time error is generated.
s (x) The sine of x, x is in radians.
c (x) The cosine of x, x is in radians.
a (x) The arctangent of x, arctangent returns radians.
l (x) The natural logarithm of x.
e (x) The exponential function of raising e to the value x.
j (n,x)
The Bessel function of integer order n of x.
Es unterstützt aber if
auch for
, while
und Variablen wie eine Programmiersprache, wenn es besser ist, in eine Datei zu schreiben, wenn Sie das möchten.
Denken Sie daran, dass es p
und x
in Funktions- / Variablennamen ersetzen wird . Es kann besser sein, nur die Ersetzungen zu entfernen.
Verwenden gcalccmd
Sie können den Funktionsaufruf gcalccmd
(von gnome-calculator
) auch folgendermaßen ausführen:
=() {
local IFS=' '
local calc="$*"
# Uncomment the below for (p → +) and (x → *)
#calc="${calc//p/+}"
#calc="${calc//x/*}"
printf '%s\n quit' "$calc" | gcalccmd | sed 's:^> ::g'
}
= 'sqrt(2)' # Returns 1.4142135623
= '4^4' # Returns 256
Die verfügbaren Funktionen scheinen (direkt aus dem Quellcode entnommen ) ==
gleichwertige Funktionen zu sein:
ln()
sqrt()
abs()
int()
frac()
sin()
cos()
tan()
sin⁻¹() == asin()
cos⁻¹() == acos()
tan⁻¹() == atan()
sinh()
cosh()
tanh()
sinh⁻¹() == asinh()
cosh⁻¹() == acosh()
tanh⁻¹() == atanh()
ones()
twos()