Linux

數字的絕對值

  • September 4, 2021

我有一行由空格分隔的數字。

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

我需要列印的值是絕對數

我又遇到了一個問題。我試圖獲得絕對數字的格式。我所做的一切都不起作用。我讀到了

abs(){ 
   number
} 

應該給我這個,但它似乎不起作用。另外,如果這確實有效,那麼您在哪裡將其工作到循環中?

將任何數字乘以其符號將生成一個正數。或者,如果您將數字的絕對值。符號的功能非常簡單:

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"

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

引用自:https://unix.stackexchange.com/questions/596194