スペースで区切られた数値行があります。
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.