2017-09-20 5 views
0

은 어쩌면 내가 지나치게 생각이 있어요하지만 여기 내 원하는 출력입니다 :Bash : 중첩 for 루프 + 중간 루프에는 두 개의 배열이 포함되어 있습니까?

one four seven 
one five eight 
one six nine 
two four seven 
two five eight 
two six nine 
three four seven 
three five eight 
three six nine 

가 여기에 내가 시작한 일입니다. 나는 두 번째 루프에 빠졌고 해결책을 찾으려는 마음을 완전히 잃어 버렸다.

#!/bin/bash 

declare -a aaa=("four" "five" "six") 
declare -a bbb=("one" "two" "three") 
declare -a ccc=("seven" "eight" "nine") 


for bs in ${bbb[@]}; do 
    for as in ${aaa[@]}, cs in ${ccc[@]}; do 
    echo "$bs" "$as" "$cs" 
    done 
done 

답변

1

당신은 for 절에 하나 이상의 in를 가질 수 없습니다.

당신은 동시에 두 개의 배열을 반복 자신의 인덱스를 반복해야하는 경우 : 당신의 대답에 대한

#! /bin/bash 

declare -a aaa=("four" "five" "six") 
declare -a bbb=("one" "two" "three") 
declare -a ccc=("seven" "eight" "nine") 

for b in "${bbb[@]}" ; do 
    for i in "${!aaa[@]}" ; do # or ccc 
     echo "$b" "${aaa[i]}" "${ccc[i]}" 
    done 
done 
+0

감사합니다. 내 문제를 해결하기 위해 원래 질문을 업데이트했습니다. 원래 문제를 지나치게 단순화했습니다. 그래도 도와 ​​줘서 고마워. 이 문제를 다시 풀려고한다면 감사 할 것입니다. – zewiblzd

+0

@ zewiblzd : 업데이트되었습니다. 다음 번에는 원래 질문과 크게 다른 질문이 있으면 새로운 질문을하십시오. – choroba