공백으로 구분된 숫자 행이 있습니다.
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.