Soustraire une variable obtenue en sortie de commandes et un entier en script shell

Je découvre le processeur idéal total en utilisant la commande

top -bn1 | grep Cpu | awk -F “,” ‘{print $ 4}’ | sed ‘s / [\ t] * // g’ | sed ‘s /% id //’

Maintenant, je veux trouver le processeur qui est utilisé, donc je tente de soustraire la sortie de la commande de 100

Donc, le script ressemble à:

i=`top -bn1 | grep Cpu | awk -F"," '{print $4}' | sed 's/[ \t]*//g' | sed 's/%id//'` j=100 k=$(( ${j}-${i} )) echo $k 

Lors de l’exécution de ce script, la sortie génère une erreur:

100-93.0: erreur de syntaxe: opérateur arithmétique invalide (le jeton d’erreur est “.0”)

Comment dois-je procéder pour soustraire le nombre décimal dérivé de 100?

Vous obtenez cette erreur car l’arithmétique BASH ne peut pas gérer les nombres à virgule flottante et vous obtiendrez la même erreur lors de l’exécution de cette commande dans bash :

 ((100-93.0)) 

Mais vous pouvez ignorer les directives grep , sed et tous les bash . Un seul awk peut gérer ce calcul comme ceci:

 top -bn1 | awk -F, '/Cpu/ {print 100-$4}'