シェルスクリプトから浮動小数点数を減算する

シェルスクリプトから浮動小数点数を減算する

シェルスクリプトで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ます珍しいコーエンシェルを差し上げます。

残りのコードはkshUbuntu 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

関連情報