Valeur absolue du nombre

Jai une seule ligne de nombres séparés par un espace.

read var sum=0 for x in $var; do ... #add numbers together $((sum += x)) done 

Jai besoin que la valeur imprimée soit un nombre absolu

Jai encore un problème que je reçois. Le format que jessaie dobtenir un nombre absolu. Rien de ce que je fais ne fonctionne. Jai lu que

abs(){ number } 

devrait me donner ceci mais cela ne semble pas fonctionner. Aussi si cela fonctionne, où travaillez-vous cela dans la boucle?

Commentaires

Réponse

Multiplier un nombre par son signe générera un nombre positif. Ou, si vous voulez la valeur absolue du nombre. La fonction du signe est très simple:

sign () { echo "$(( $1 < 0 ? -1 : 1 ))"; } 

La valeur absolue est alors:

echo "$(( x * $(sign "$x") ))" 

Bien sûr, il est beaucoup plus facile de supprimer simplement le signe négatif de tête (sil existe), ou, pour être complet, tout + ou - signe (sil existe) avec des espaces au début:

echo "${x##*[+-]}" # assuming x is an integer valid in the shell. 

Réponse

Si vous « avez un entier négatif, vous pouvez le traiter comme une chaîne et supprimer le tiret au début

x=-5 echo ${x#-}. # "5" 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *