두 개의 변수 목록을 반복하고 해당 순서를 명령에 할당합니다.

두 개의 변수 목록을 반복하고 해당 순서를 명령에 할당합니다.

두 개의 변수 목록이 있는 경우: (두 번째 목록에서 공백은 요소 구분 기호입니다.)

l1=(su1 su2 su3 su4)
l2=(1,2,3 4,3,2 4,7,6 3,2,1)

su1AND 1,2,3, su2AND 4,3,2,, su3AND 4,7,6, su4AND 를 의미하는 명령을 실행하기 위해 두 개의 목록을 반복하고 싶습니다.3,2,1

따라서 의 각 요소가 l1디렉토리에 해당하고 다음과 같은 작업을 수행하고 싶다면:

#!/bin/bash
directory=/some/path
l1=(su1 su2 su3 su4)
l2=(1,2,3 4,3,2 4,7,6 3,2,1)
for i in "${l1[@]}"
do
for e in "${l2[@]}"
do
cd $directory/$i
echo "${e}" > file.txt
done
done

즉, 각 디렉토리로 cd l1하고 해당 요소가 포함된 파일을 만듭니다.l2

위는 내가 시도한 것이지만 l2각 디렉토리의 첫 번째 요소를 사용하여 파일을 생성합니다.l1

답변1

이것을 사용하십시오 :

# first create those directories
mkdir "${l1[@]}"
# set counter value to 0
c=0
# loop trough the array l1 (while the counter $c is less than the length of the array $l1)
while [ "$c" -lt "${#l1[@]}" ]; do
  # echo the corresponding value of array l2 to the file.txt in the directory
  echo "${l2[$c]}" > "${l1[$c]}/file.txt"
  # increment the counter
  let c=c+1
done

결과:

$ cat su1/file.txt 
1,2,3
$ cat su2/file.txt 
4,3,2
$ cat su3/file.txt 
4,7,6
$ cat su4/file.txt 
3,2,1

관련 정보