[bash] Bash 스크립트에 전달 된 인수 수는 어떻게 찾습니까?

Bash 스크립트에 전달 된 인수 수는 어떻게 찾습니까?

이것이 내가 현재 가지고있는 것입니다 :

#!/bin/bash
i=0
for var in "$@"
do
  i=i+1
done

이 작업을 수행하는 다른 (더 나은) 방법이 있습니까?



답변

인수의 수는 $#

자세한 내용은이 페이지에서 검색하십시오.
http://tldp.org/LDP/abs/html/internalvariables.html#ARGLIST


답변

#!/bin/bash
echo "The number of arguments is: $#"
a=${@}
echo "The total length of all arguments is: ${#a}: "
count=0
for var in "$@"
do
    echo "The length of argument '$var' is: ${#var}"
    (( count++ ))
    (( accum += ${#var} ))
done
echo "The counted number of arguments is: $count"
echo "The accumulated length of all arguments is: $accum"


답변

원래 참조를 추가하려면 다음을 수행하십시오.

당신은 특수 매개 변수에서 인수의 수를 얻을 수 있습니다 $#. 값이 0이면 “인수 없음”을 의미합니다. $#읽기 전용입니다.

shift인수 처리 와 함께 사용하면 $#Bash Builtin shift이 실행될 때마다 특수 매개 변수 가 감소합니다 .

섹션 3.4.2 특수 매개 변수의 Bash Reference Manual참조 하십시오 .

  • “쉘은 여러 매개 변수를 특별히 취급합니다.이 매개 변수

  • 키워드 $ #에 대한이 섹션에서 “10 진수의 위치 매개 변수 수로 확장됩니다.”


답변

아래는 쉬운 것입니다-

고양이 countvariable.sh

echo "$@" |awk '{for(i=0;i<=NF;i++); print i-1 }'

출력 :

#./countvariable.sh 1 2 3 4 5 6
6
#./countvariable.sh 1 2 3 4 5 6 apple orange
8


답변

그 값은 변수에 포함되어 있습니다 $#


답변