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
답변
그 값은 변수에 포함되어 있습니다 $#
답변
