일반적으로 산술 연산을하기 위해 쉘 스크립트 내에서 expr을 사용합니다.쉘 스크립팅 산술
거기에 expr을 사용하지 않고 쉘 스크립트에서 산술 연산을 사용할 수있는 방법이 있습니까?
일반적으로 산술 연산을하기 위해 쉘 스크립트 내에서 expr을 사용합니다.쉘 스크립팅 산술
거기에 expr을 사용하지 않고 쉘 스크립트에서 산술 연산을 사용할 수있는 방법이 있습니까?
ksh를 사용하는 경우 "man ksh"를 읽으려고 했습니까?
예를 들어, "man bash"는 배쉬로 산술을 수행하는 것에 대한 충분한 정보를 가지고 있습니다.
typeset -i 명령을 사용하면 변수를 정수로 처리해야 함을 지정할 수 있습니다. 예를 들어 typeset -i MYVAR은 변수 MYVAR이 문자열이 아닌 정수가되도록 지정합니다. ,
$ typeset -i MYVAR
$ MYVAR=56
$ echo $MYVAR
56
$ MYVAR=fred
ksh: fred: bad number
$
변수 나 쉘 스크립트에서 산술 연산을 수행하려면하자 명령을 사용하여 조판 명령에 따라, 변수가 아닌 정수 값이 실패합니다 할당 할 시도합니다. 인수를 간단한 산술 표현식으로 평가합니다. 예를 들어
는$ let ans=$MYVAR+45
echo $ans
101
$
상기로도 작성 될 수있는 표현은 다음과 같다 : $ ((과)) 내에 포함
$ echo $(($MYVAR+45))
101
$
뭐든지 연산 식
현대의 쉘 (내보기에 현대적인 POSIX 호환)은 산술 연산을 지원합니다. 부호가있는 긴 정수 변수 +/- 2147483647에 +/- *
배정도는 awk를 사용하고 15 자리는 sqrt입니다.
최대 유효 자릿수까지 확장 된 정밀도로 bc -l을 사용하십시오. 쉘
구문 (zed_0xff는) 이미 보았다
a=$((13 * 2))
a=$(($2/2))
b=$(($a - 1))
a=(($a + $b))
AWK를 double 정밀도로 수행 - 부동 소수점 - 기본적으로 산술 연산을. 또한 SQRT, 왜냐하면, 죄를 가지고 .... 참조 :
BC -l
:http://people.cs.uu.nl/piet/docs/nawk/nawk_toc.html
BC는 -l 옵션과 함께 사용할 수있는 몇 가지 정의 함수 및 확장 presision있다
예 :
echo 'sqrt(.977)' | bc -l
정밀도와 쉘의 범위는 $((<expr>))
를 내장 플랫폼에 따라 달라집니다. 32 비트 플랫폼에서는 32 비트 정수로 제한됩니다 (expr
과 달리 플랫폼에서 독립적 인 것처럼 보이는 더 큰 정수를 지원하는 것으로 보입니다).
(N.B -. 오히려 XOR을 ^
대부분 껍질에 유효한 운영자 동안, 그것은 '의 능력'을 의미하지 않는다는 것을 조심하지만)
또한 - 일부 쉘은이 점에서 더 곧 출시됩니다.예를 들어, Zsh는 부동 소수점 연산을 허용합니다. $((10/3.0))
대신에 "bc'를 사용하십시오"는 꽤 * 찾고있는 대답이 아닙니다 ... –
@ignacio ... 용서할 수 있습니까? BC를 사용하는 방법의 예? – Vijay
'PI = $ (echo "4 * a (1)"| bc -l)' –