쉘 스크립트에서 부동 소수점 숫자 빼기

쉘 스크립트에서 부동 소수점 숫자 빼기

쉘 스크립트에서 CPU 사용량을 사용하여 몇 가지 계산을 하려고 합니다. 부동 소수점 숫자를 반환합니다. 하지만 이 숫자를 빼면 오류가 발생합니다. 아래 코드와 오류를 참조하세요.

암호

#!/bin/sh

CPU_IDLE=98.67
echo $CPU_IDLE
CPU_USAGE=$(( 100 - $CPU_IDLE ))
echo $CPU_USAGE

실수

./poc.sh: line 14: 100 - 98.67 : syntax error: invalid arithmetic operator (error token is ".67 ")

답변1

또한 부동 소수점 연산을 수행 bash할 수 없습니다 ( 제 기억이 맞다면 지원됩니다). 다음과 같은 외부 도구 로 전환하거나 실행하는 것이 좋습니다 .kshksh93zshbc

$ CPU_IDLE=98.67
$ echo "$CPU_IDLE"
$ CPU_USAGE=$( bc <<< "100 - $CPU_IDLE" )
$ echo "$CPU_USAGE"
1.33

답변2

사용하더라도귀하의 질문에 표시된 것처럼 스크립트는 hashbang으로 시작 #!/bin/sh하며희귀한코헨 쉘을 드려요.

나머지 코드는 ksh우분투 14.04의 (AT&T ksh93)에서 잘 작동합니다.

$ ksh poc.sh
98.67
1.33

$ ls -lL /bin/ksh*
-rwxr-xr-x 1 root root 1509040 Jan  9  2013 /bin/ksh
-rwxr-xr-x 1 root root 1509040 Jan  9  2013 /bin/ksh93

관련 정보