두 개의 변수를 사용하여 for 루프를 실행하시겠습니까? [복사]

두 개의 변수를 사용하여 for 루프를 실행하시겠습니까? [복사]

어떻게 달릴 수 있어?for 루프아니면 two variables다시 말해서 이것이 허용됩니까? 다음 예를 통해 내 질문을 명확히하겠습니다.

텍스트 파일 "names.txt"에 문자 목록이 있고 텍스트 파일 "numbers.txt"에 숫자 목록이 있습니다. "numbers.txt"의 각 숫자는 "names.txt"의 문자(한 줄씩)와 같습니다. " names.txt에 이름 + Numbers.txt에 숫자가 포함된 폴더를 만들고 싶습니다.

names.txt       numbers.txt         output_folder name
A               1                   A1
B               2                   B2
C               3                   C3
D               4                   D4
E               5                   E5

이름에는 생성할 폴더의 이름이 포함됩니다. 텍스트의 경우 다음 코드를 사용할 수 있습니다.

#!/bin/bash
in=/in/on/an
out=/ss/tt/nn
for i in $(cat $in/names.txt); do
 mkdir ${in}/${i}
done

for 루프에 두 번째 변수를 추가하는 방법, 즉 이전 코드에서 변수 i는 name.txt에 속합니다. number.txt에 속하는 변수 b를 추가하는 방법은 무엇입니까?

답변1

이것이 실제로 필요한 것이라면 할 수 있습니다

mkdir $(paste letters.txt numbers.txt | tr -d '\t')

그러면 디렉터리가 생성됩니다. Bash의 일반적인 경우에는 일반적으로 비슷한 방식으로 수행됩니다.

paste letters.txt numbers.txt | while read let num; do 
    mkdir "${let}${num}" 
done

특정 질문에 답하기 위해 bash에서는 여러 변수를 사용하여 루프를 실행할 수 없지만 for보시다시피 일반적으로 몇 가지 해결 방법이 있습니다. 가장 가까운 것은 배열을 사용하는 것입니다. 예를 들어:

let=( $(cat letters.txt) )
num=( $(cat numbers.txt) )
for((i=0;i<${#let[@]};i++)); do 
    mkdir "${let[$i]}${num[$i]}"
done

관련 정보