쉘에서 10 개 이상의 매개 변수를 처리하는 방법


101

Linux에서 bash 셸을 사용하고 있으며 셸 스크립트에서 10 개 이상의 매개 변수를 사용하고 싶습니다.


8
10 개의 매개 변수가 있으면 매우 혼란스러워집니다. 대신 옵션 (예 : -a 1또는 --foo=bar) 을 사용하는 것이 더 낫습니다 . 이를 위한 몇 가지 옵션 은 man getopt, 및를 참조하십시오 . man getoptsman bash
Mikel

답변:


158

중괄호를 사용하여 설정하십시오.

echo "${10}"

다음과 같이 위치 매개 변수를 반복 할 수도 있습니다.

for arg

또는

for arg in "$@"

또는

while (( $# > 0 ))    # or [ $# -gt 0 ]
do
    echo "$1"
    shift
done

2
$ {10}은 bash에서 작동하지만 sh의 많은 구현은 단일 숫자 사양 만 허용하므로 이식성을 제한합니다.
William Pursell

1
@William : 원래 레거시 Bourne 셸과 같이 허용하지 않는 셸이 있지만 다른 주석 (Bash, dash, ksh 및 zsh)에 나열한 셸 외에도 csh, tcsh에서도 작동합니다. 그리고 Busybox ash.
추후 공지가있을 때까지 일시 중지되었습니다.

1
@WilliamPursell는 ${10}정의 POSIX에 의해
스티븐 페니

2
${10}작업 에 대한 걱정은 표준을 준수하지 않는 매우 오래된 구현을 사용할 때만 필요합니다. 아마도 역사적인 관심사 일 것입니다 ...하지만 아직 사용하지 않았습니다! 모범 사례에 따르면 10 개의 인수가 반복되지 않는 한 너무 많은 인수가 지정되어 있으므로 "$@"열거하지 않고 반복 해야합니다.
William Pursell

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.