数値の絶対値

数値の絶対値

スペースで区切られた数値行があります。

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

印刷する値は絶対数です。

私も問題に直面しました。絶対数字の形式を取得しようとしています。私がしていることは何も機能しません。私は読んだ

abs(){ 
    number
} 

これを私に与えなければなりませんが、うまくいかないようです。また、これがうまくいけば、ループのどこに置きますか?

答え1

負の整数がある場合は、それを文字列として処理して先行ダッシュを削除できます。

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

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

答え2

任意の数に乗算するシンボル正数を生成します。または、数値の絶対値を知りたい場合。 Signの機能は非常に簡単です。

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

絶対値は次のようになります。

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

もちろん、前の負の記号がある場合は削除する方がはるかに簡単です。あるいは、完全性のために先行スペースを含む記号を削除する方がはるかに+簡単です-

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

関連情報