Bash Aritmatika
Solusi lain yang mungkin adalah menambahkan fungsi sederhana untuk aritmatika bawaan Bash. Masukkan ini .bashrcke file Anda untuk mencoba:
=() {
echo "$(($@))"
}
Jadi sekarang, Anda bahkan tidak perlu $((...))lagi, hanya =yang tampaknya cukup alami.
Penggantian
Hal lain jika Anda ingin menjadi lebih cepat: Anda dapat membuatnya ganti pdengan +dan xdengan *. Ini akan bekerja untuk itu:
=() {
local IFS=' '
local calc="${*//p/+}"
calc="${calc//x/*}"
echo "$(($calc))"
}
= 5 x 5 # Returns 25
= 50p25 # Returns 75
Sekarang Anda bahkan tidak perlu Shiftlagi, satu-satunya hal = di depan aritmatika.
Output heksadesimal
Output dapat ditampilkan dalam desimal dan heksadesimal, jika diinginkan. ( Catatan : menggunakan xsubtitusi akan bertentangan dengan 0x...sintaks hex)
=() {
local answer="$(($@))"
printf '%d (%#x)\n' "$answer" "$answer"
}
Contoh:
$ = 16 + 0x10
272 (0x110)
$ = 16**3 + 16**4
69632 (0x11000)
Menggunakan bc
Jika Anda ingin perhitungan yang sedikit lebih maju, Anda bisa membuatnya bcseperti:
=() {
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)
Fungsi-fungsi yang disediakan oleh bcadalah sebagai berikut (dan dapat ditemukan dari man bc):
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.
Ini juga mendukung if, for, whiledan variabel seperti bahasa pemrograman meskipun jika mungkin lebih baik untuk menulis ke file jika Anda ingin itu.
Ingatlah bahwa itu akan menggantikan pdan xdalam fungsi / nama variabel. Mungkin lebih baik menghapus saja penggantian.
Menggunakan gcalccmd
Anda juga dapat membuat panggilan fungsi gcalccmd(dari gnome-calculator) seperti:
=() {
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
Fungsi yang tersedia tampaknya (diambil langsung dari kode sumber ), ==menunjukkan fungsi yang setara:
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()