Linux
數字的絕對值
我有一行由空格分隔的數字。
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"