スペースで区切られた1行の数値があります。
read var sum=0 for x in $var; do ... #add numbers together $((sum += x)) done
出力される値は絶対数である必要があります
もう1つ問題が発生しています。絶対数を取得しようとしている形式。私がしていることは何も機能していません。読んだ
abs(){ number }
これは表示されるはずですが、機能していないようです。それが機能する場合は、ループのどこで機能しますか?
コメント
回答
任意の数値に sign を掛けると、正の数値が生成されます。または、絶対値を使用する場合は符号の関数は非常に単純です:
sign () { echo "$(( $1 < 0 ? -1 : 1 ))"; }
絶対値は次のとおりです:
echo "$(( x * $(sign "$x") ))"
もちろん、先頭の負の記号(存在する場合)を削除する方がはるかに簡単です。完全を期すために、+
または-
記号(存在する場合)と先頭のスペース:
echo "${x##*[+-]}" # assuming x is an integer valid in the shell.
回答
負の整数がある場合は、それを文字列として扱い、先頭のダッシュを削除できます
x=-5 echo ${x#-}. # "5"
zmodload zsh/mathfunc
の後)にはabs()
算術関数があることに注意してください。echo "$(( abs(-12) ))"
は12
を出力します。