스크립트를 추가해도 예상된 출력이 반환되지 않습니다.

스크립트를 추가해도 예상된 출력이 반환되지 않습니다.

사용자가 입력한 숫자의 합을 계산하는 스크립트를 원합니다.

지금까지 나는 다음을 가지고 있습니다 :

#!/bin/bash
add() {
  sum=0

  for num
  do
          sum=$((sum +num))
  done

}

echo "$sum"

내가 사용하는 명령은 다음과 같습니다

add 4 -3 9 12

반환값은 다음과 같습니다: 빈 줄 - 단어가 아니라 빈 줄입니다. username~/folder:>

내가 무엇을 놓치고 있나요?

권한은 rwxr xr x 경로의 폴더를 사용하여 대화형 셸을 실행하고 있는데 헤매고 있습니다.

답변1

스크립트를 약간 수정해 보겠습니다.

$ cat add.sh
#!/bin/bash
add() {
  sum=0
  for num
  do
          sum=$((sum +num))
  done
}

add "$@"
echo "sum=$sum"

이제 스크립트를 실행해 보겠습니다.

$ bash add.sh 4 -3 9 12
sum=22

효과가있다.

유일한 변경 사항은 add "$@"echo하기 전에 함수를 호출한다는 것입니다 sum.

답변2

그냥 포함시키려고실제이를 수행하는 간단한 방법:

#!/bin/bash
IFS=+
bc <<< "$*"

이것을 사용하십시오 (실행 권한이 있는 파일에서 호출될 때 add.sh):

$ ./add.sh 4 -3 9 12
22
$ 

~/.bashrc아니면 그냥 함수로 정의하거나 작성 중인 더 큰 bash 스크립트로 정의하세요.

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

관련 정보