バッシュ算術
別の可能な解決策は、Bashの組み込み演算用の単純な関数を追加することです。これを.bashrc
ファイルに入れて試してください:
=() {
echo "$(($@))"
}
ですから、今では$((...))
もう必要ありません=
。これは当然のことです。
置換
もう一つは、あなたも速くなりたい場合は:あなたはそれを置き換えることができますp
と+
してx
と*
。これはそのために動作します:
=() {
local IFS=' '
local calc="${*//p/+}"
calc="${calc//x/*}"
echo "$(($calc))"
}
= 5 x 5 # Returns 25
= 50p25 # Returns 75
今ではShiftもう必要さえありません、唯一のものは=
算術の前にあります。
16進出力
必要に応じて、出力を10進数と16進数の両方で表示できます。(注:x
置換を使用すると、0x...
16進構文と競合します)
=() {
local answer="$(($@))"
printf '%d (%#x)\n' "$answer" "$answer"
}
例:
$ = 16 + 0x10
272 (0x110)
$ = 16**3 + 16**4
69632 (0x11000)
を使用して bc
少し高度な計算が必要な場合は、次のbc
ようにパイプすることができます。
=() {
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)
によって提供される関数はbc
次のとおりです(およびから見つけることができます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.
また、サポートif
、for
、while
、あなたはそれを望んでいたならば、それは良いかもしれ場合しかし、プログラミング言語のような変数は、ファイルに書き込みます。
それが代用されますことを心に留めておいてくださいp
とx
機能/変数名に。単に置換を削除する方が良い場合があります。
を使用して gcalccmd
次のようにgcalccmd
(からgnome-calculator
)関数呼び出しを行うこともできます。
=() {
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
使用可能な関数は(ソースコードから直接取得した)ようで、==
同等の関数を示します。
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()