数値の絶対値

スペースで区切られた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" 

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です