배쉬 산술
또 다른 가능한 해결책은 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()