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"
zmodload zsh/mathfunc
) ont une fonction arithmétiqueabs()
. Là,echo "$(( abs(-12) ))"
affichera12
.