Valoarea absolută a numărului

Am o singură linie de numere separate printr-un spațiu.

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

Am nevoie ca valoarea tipărită să fie un număr absolut

Am mai primit un număr. Formatul pe care încerc să obțin un număr absolut. Nimic din ceea ce fac nu funcționează. Am citit că

abs(){ number } 

ar trebui să-mi dea acest lucru, dar nu pare să funcționeze. De asemenea, dacă asta funcționează, unde lucrezi asta în buclă?

Comentarii

Răspuns

Înmulțirea oricărui număr cu semnul său va genera un număr pozitiv. Sau, dacă doriți, valoarea absolută a numărului. Funcția pentru semn este foarte simplă:

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

Valoarea absolută este apoi:

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

Desigur, este mult mai ușor să eliminați semnul negativ principal (dacă există) sau, pentru completare, orice + sau - semn (dacă există) cu orice spații principale:

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

Răspuns

Dacă aveți un număr întreg negativ, îl puteți trata ca un șir și puteți elimina liniuța principală

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

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *