합계를 반환하기 위해 while 매개변수 루프를 반복하는 방법은 무엇입니까?

합계를 반환하기 위해 while 매개변수 루프를 반복하는 방법은 무엇입니까?
if test $# -lt 1
then
        echo "Please input a valid amount of numbers. Need at least one."
        exit 1
else
        args=0
        while args -eq "$#"; do
                echo $args
                shift
        done
fi

echo $sum
echo $n

내가받는 오류는 다음과 같습니다

./whileParamList: 15: ./whileParamList: args: not found

while 루프는 이전 매개변수로 증가합니다.+=

답변1

Bash는 수치 ​​계산용으로 설계되지 않았습니다. 이것은조정자, C 또는 Python의 의미에서 "언어"가 아닙니다. 자세한 내용보기:


내가하는 방식은 다음과 같습니다.

mysum() (
  IFS=+
  bc<<<"$*"
)

아마도:

mysum() (
  IFS=+
  echo "$(($*))"
)

그런 다음 다음과 같이 호출하십시오.

$ mysum 5 89 83 7 0 2
186

답변2

내 생각에 이와 같은 것은 괜찮다고 생각합니다.

if [[ $# -lt 1 ]]
then
        echo "Please input a valid amount of numbers. Need at least one."
        exit 1
else
        n=$#
        sum=0
        for arg in "$@"
        do
          echo "$arg"
          sum=$(($sum+$arg))
        done
fi

echo "sum=$sum"
echo "number of parameters=$n"

매개변수 이동 방식을 선호하는 경우 다음과 같이 작동합니다.

if [[ $# -lt 1 ]]
then
        echo "Please input a valid amount of numbers. Need at least one."
        exit 1
else
        n=$#
        sum=0
        while [[ $# -ne 0 ]];
        do
          echo "arg=$1"
          sum=$(($sum+$1))
          shift
        done
fi

echo "sum=$sum"
echo "number of parameters=$n"

관련 정보