껍질
간단한 (경우 CLI에서 CALC는 CLI (쉘) 자체 IFS기본값) :
$ echo $(( 22 + 333 ))
355
공백은 생략 할 수 있습니다.
$ echo $((22*333))
7326
그대로 POSIX의 부분은 거의 모든 쉘은 그것이있다. 그리고 대부분 의 C 언어 수학 기능 이 포함되어 있습니다 (zsh의 우선 순위가 다른 것을 제외하고 C_PRECEDENCES를 설정하여 호환 가능한 값으로 복원).
$ echo $((22*333^2))
7324
그리고 일부 쉘에는 대부분의 C 언어 수학 구문 (쉼표 포함)이 있습니다.
$ echo $((a=22,b=333,c=a*b,c))
7326
그러나 일부 쉘 에서는 정수 수학 ( 현재 OS에서 일반적으로 2 63 미만 )입니다.
$ echo $((1234/3))
411
$ zsh -c 'echo $((2**63))'
-9223372036854775808
일부 쉘은 부동 수학을 수행 할 수 있습니다.
$ ksh -c 'echo $((1234/3.0))'
411.333333333333333
$ ksh -c 'echo $((12345678901234567890123/3.0))'
4.11522630041152263e+21
zsh를 피하십시오 (zcalc도 비슷한 문제가 있습니다).
$ zsh -c 'echo $((12345678901234567890123 + 1))'
zsh:1: number truncated after 22 digits: 12345678901234567890123 + 1
-1363962815083169259
나는 당신이 피하는 것이 좋습니다 expr, 때때로 이상한 탈출이 필요합니다 :
$ expr 22 \* 333
7326
기원전
다음 단계는 ( POSIX ) bc(RPN의 사촌 dc)
$ echo '22*333' | bc
7326
$ echo '22 333 * p' | dc
7326
는 dc 했다 POSIX 그러나 2017 년이 제거되었다 .
쉘이 지원하는 경우 더 짧습니다.
$ bc <<<'22*333'
7326
또는:
$ <<<'22*333' bc
7326
둘 다 내부 수학 함수가있는 임의의 정밀 계산기입니다.
$ bc <<<2^200
1606938044258990275541962092341162602522202993782792835301376
$ echo 's(3.1415/2)' | bc -l # sine function
.99999999892691403749
어 wk
정말 기본적인 계산 도구를 사용하면 다른 언어로 올라 가야합니다.
$ awk "BEGIN {print (22*33)/7}"
103.714
$ perl -E "say 22*33/7"
103.714285714286
$ python3 -c "print(22*33/7)"
103.71428571428571
$ php -r 'echo 22*33/7,"\n";'
103.71428571429
함수
위 옵션 중 하나의 기능을 정의 할 수 있습니다.
c ()
{
local in="$(echo " $*" | sed -e 's/\[/(/g' -e 's/\]/)/g')";
gawk -M -v PREC=201 -M 'BEGIN {printf("%.60g\n",'"${in-0}"')}' < /dev/null
}
그리고 사용하십시오 :
$ c 22* 33 /7 # spaces or not, it doesn't matter.
103.714285714285714285714285714285714285714285714285714285714
quit에bc;ctrl-D대화 형 프로그램에서와 같이을 누르면 됩니다.