Bash에서 동시에 두 배열을 반복합니다.
두 개의 배열이 있습니다.
array=(
Vietnam
Germany
Argentina
)
array2=(
Asia
Europe
America
)
이 두 배열을 동시에 반복합니다. 즉, 두 배열의 첫 번째 요소에 대해 명령을 호출 한 다음 두 번째 요소에 대해 동일한 명령을 호출하는 식입니다. 의사 코드 :
for c in $(array[*]}
do
echo -e " $c is in ......"
done
어떻게 할 수 있습니까?
anishsane의 답변과 그 안에있는 코멘트에서 우리는 이제 당신이 원하는 것을 압니다. for 루프를 사용하는 bashier 스타일 의 동일한 작업이 있습니다. 참조 매뉴얼 의 루핑 구문 섹션을 참조하십시오 . 또한 사용하고 printf
대신 echo
.
#!/bin/bash
array=( "Vietnam" "Germany" "Argentina" )
array2=( "Asia" "Europe" "America" )
for ((i=0;i<${#array[@]};++i)); do
printf "%s is in %s\n" "${array[i]}" "${array2[i]}"
done
또 다른 가능성은 연관 배열을 사용하는 것입니다.
#!/bin/bash
declare -A continent
continent[Vietnam]=Asia
continent[Germany]=Europe
continent[Argentina]=America
for c in "${!continent[@]}"; do
printf "%s is in %s\n" "$c" "${continent[$c]}"
done
수행하려는 작업에 따라이 두 번째 가능성을 고려하는 것이 좋습니다. 그러나 두 번째 가능성에서 필드가 표시되는 순서를 쉽게 제어 할 수 없다는 점에 유의하십시오 (음, 연관 배열이므로 실제로 놀라운 것은 아닙니다).
모든 배열이 올바르게 정렬 된 경우 인덱스를 전달하십시오.
array=(
Vietnam
Germany
Argentina
)
array2=(
Asia
Europe
America
)
for index in ${!array[*]}; do
echo "${array[$index]} is in ${array2[$index]}"
done
Vietnam is in Asia
Germany is in Europe
Argentina is in America
배열 및 배열 2에 대한 루프가 필요합니다.
i=0
while [ $i -lt ${#array[*]} ]; do
echo ${array[$i]} is in ${array2[$i]}
i=$(( $i + 1));
done
Vietnam is in Asia
Germany is in Europe
Argentina is in America
편집 : 아래 tr
기반 구현을 사용하지 마십시오 . 공백을 포함하는 배열 요소에는 작동하지 않습니다. 댓글의 관련성을 유지하기 위해 제거하지 않습니다. 아래 답변 대신 glenn jackman의 의견을 참조하십시오.
/편집하다
또는 루프없이이 옵션을 사용할 수 있습니다.
paste <(tr ' ' '\n' <<< ${array[*]}) <(tr ' ' '\n' <<< ${array2[*]}) | sed 's/\t/ is in /'
두 변수가 다음과 같이 여러 줄이있는 두 문자열 인 경우 :
listA=$(echo -e "Vietnam\nGermany\nArgentina")
listB=$(echo -e "Asia\nEurope\nAmerica")
그런 다음이 경우의 해결책은 다음과 같습니다.
while read strA <&3 && read strB <&4; do
echo "$strA is in $strB"
done 3<<<"$listA" 4<<<"$listB"
특히 질문에 대한 질문 (3 개 항목이있는 배열) :
for i in $(seq 0 2) ; do echo "${array1[$i]} is in ${array2[$i]}" ; done
참고URL : https://stackoverflow.com/questions/17403498/iterate-over-two-arrays-simultaneously-in-bash
'Programing' 카테고리의 다른 글
내 서버의 ECDSA 키 지문이 무엇인지 확인하려면 어떤 명령을 사용해야합니까? (0) | 2020.11.08 |
---|---|
목록의 특정 색인에 요소를 삽입하고 업데이트 된 목록을 반환합니다. (0) | 2020.11.08 |
회사 도메인을 포함한 전체 패키지 이름 변경 (0) | 2020.11.08 |
Flask-Session 확장을 사용하여 플라스크 세션에 비밀 키가 설정되지 않았습니다. (0) | 2020.11.08 |
Xcode UI 테스트-UI 테스트 실패-검색 필드 "취소"버튼을 탭할 때 표시 (AX 작업에 의해)로 스크롤하지 못했습니다. (0) | 2020.11.08 |