숫자의 절대 값

공백으로 구분 된 한 줄의 숫자가 있습니다.

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

절대 숫자로 인쇄 된 값이 필요합니다.

문제가 하나 더 있습니다. 절대 숫자를 얻으려는 형식입니다. 내가하는 일은 아무것도 작동하지 않습니다.

abs(){ number } 

이것을 주어야하지만 작동하지 않는 것 같습니다. 또한 작동한다면 어디에서 루프로 작업합니까?

댓글

Answer

모든 숫자에 기호 를 곱하면 양수가 생성됩니다. 또는 절대 값이 될 경우 부호의 기능은 매우 간단합니다.

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" 

답글 남기기

이메일 주소를 발행하지 않을 것입니다. 필수 항목은 *(으)로 표시합니다