별도의 변수에서 매개변수를 읽는 방법

별도의 변수에서 매개변수를 읽는 방법

명령줄에서 매개변수를 읽는 것은 매우 쉽습니다.$1 $2 $3

하지만! 분산 루프를 하고 싶다면 입력을 통해 하고 싶지 않고 $1 to $arg1단일 처리 방법을 배우고 싶습니다 . 루프는 어떻게 합니까?$2 to $arg2arg1=$1; arg2=$2$

증가시키려면 $arg추가 $arg$nr 하고 계산 하면 됩니다 $nr. 그런데 이를 어떻게 처리합니까 $1? $$nr작동 안함..

답변1

배열이 있는 쉘의 경우 전통적인 대답은 배열을 사용하는 것입니다.

arg=( "$@" )

$1그런 다음 in ${arg[0]}, $2in ${arg[1]}등이 있습니다 .

이를 반복하려면 다음을 사용하십시오.

for a in "${arg[@]}"; do
    # code that uses "$a" goes here
done

또는 위치 인수 목록에 여전히 데이터가 있고 입력을 줄이고 싶다면,

for a do
    # code that uses "$a" goes here
done

원본 매개변수의 데이터가 분할되거나 글로빙 패턴으로 사용되는 것을 방지하려면 인용이 중요합니다.

답변2

전통적인 대답은 를 사용하는 것입니다 eval.

for ((i=1; i<=$#; i++))
do
    eval "arg$i=\${$i}"
done

(중괄호는 in 과 같이 필요하며 bash대신 으로 $10해석됩니다 .)${1}0${10}

관련 정보