बैश अंकगणित
एक अन्य संभावित उपाय है, बैश के बिल्ट अंकगणित के लिए एक सरल कार्य जोड़ना। इसे अपनी .bashrc
फ़ाइल में आज़माएं:
=() {
echo "$(($@))"
}
तो अब, आप भी $((...))
अब और जरूरत नहीं है, =
जो पर्याप्त प्राकृतिक लगता है।
प्रतिस्थापन
एक और बात आप भी तेजी से होना चाहते हैं: क्या आप इसे बदलना कर सकते हैं p
के साथ +
और x
साथ *
। इसके लिए यह काम करेगा:
=() {
local IFS=' '
local calc="${*//p/+}"
calc="${calc//x/*}"
echo "$(($calc))"
}
= 5 x 5 # Returns 25
= 50p25 # Returns 75
अब आपको किसी भी तरह की आवश्यकता Shiftनहीं है, केवल एक चीज =
अंकगणित के सामने है।
हेक्साडेसिमल आउटपुट
आउटपुट को दशमलव और षोडश आधारी दोनों में प्रदर्शित किया जा सकता है, यदि ऐसा है तो वांछित। ( नोट : x
प्रतिस्थापन का उपयोग करके 0x...
हेक्स सिंटैक्स के साथ संघर्ष होगा )
=() {
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()