공백으로 구분 된 한 줄의 숫자가 있습니다.
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"
zmodload zsh/mathfunc
이후)에는abs()
산술 함수가 있습니다. 여기에서echo "$(( abs(-12) ))"
는12
를 출력합니다.