숫자의 절대값

숫자의 절대값

공백으로 구분된 숫자 행이 있습니다.

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.

관련 정보