Linux

在shell腳本中減去浮點數

  • August 20, 2015

我正在嘗試使用 CPU 使用率在 shell 腳本中進行一些計算。哪個返回浮點數。但是當我減去這個數字時,我得到了錯誤。請參閱以下程式碼和錯誤。

程式碼

#!/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 ")

bash不能ksh執行浮點運算(ksh93如果我沒記錯的話支持)。我建議切換到zsh或執行外部工具,例如bc

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

即使您在問題中使用了ksh標籤,腳本也以#!/bin/shhashbang 開頭,它很少會給您一個 korn shell。

其餘程式碼可ksh在 ubuntu 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

引用自:https://unix.stackexchange.com/questions/224229