두 개의 서로 다른 변수를 사용하여 명령을 반복하는 방법은 무엇입니까?

두 개의 서로 다른 변수를 사용하여 명령을 반복하는 방법은 무엇입니까?

커널 2.6.x 사용

GNU bash, 버전 4.3.42(1)-릴리스(arm-openwrt-linux-gnu)

Bash 스크립트에서 다음 변수를 사용하여 다음 결과를 생성하는 for 루프를 작성하려면 어떻게 해야 합니까?

command option option abc option 10
command option option def option 20

VAR1=“abc 정의”

VAR2="10 20"

$VAR1을 반복할 수 있지만 $VAR2를 반복하는 방법을 모르겠습니다.

for i in $VAR1; do
command option option "$VAR1" option "$VAR2"
done

명령줄을 두 개의 문자열로 분할하고 각각을 반복한 다음 연결해야 합니까?

배열과 함께 count 변수를 사용하는 것은 어떻습니까? 예를 들어...

count=1
echo ${VAR1["$count"]}

while 루프가 작동하면 변수를 계산할 수 있나요?

답변1

이건 어때:

arr1=(abc def)
arr2=(10 20)

그런 다음:

for (( i=0; i<${#arr1[@]}; i++ )); do echo "${arr1[i]} ${arr2[i]}"; done
abc 10
def 20

귀하의 경우 echo 문은 다음과 같습니다.

for (( i=0; i<${#arr1[@]}; i++ )); do 
    echo "command option option ${arr1[i]} option ${arr2[i]}"
done
command option option abc option 10
command option option def option 20

바라보다여기예를 들어, bash의 C 스타일 for 루프입니다.

답변2

다음을 사용하는 것이 더 쉽습니다 zsh.

$ a=(a b c) b=(1 2 3)
$ for i j (${a:^b}) echo "i: $i, j: $j"
i: a, j: 1
i: b, j: 2
i: c, j: 3

${a:^b}는 배열 압축 연산자입니다( a, 1, b, 2, c, 위의 로 확장됨 3).

$VAR1POSIX와 유사한 셸 (예: @maulinglawns의 답변에 대한 설명을 기반으로 사용하는 것으로 보이는 busybox ) 에서 분할+glob 연산자가 적용되는 단어를 반복하려는 경우 $VAR2위치 인수를 사용할 수 있습니다.sh

VAR1='a b c'
VAR2='1 2 3'
set -- $VAR1
for j in $VAR2; do
  echo "i: $1, j: $j"
  shift
done

관련 정보