두 개의 변수 목록이 있는 경우: (두 번째 목록에서 공백은 요소 구분 기호입니다.)
l1=(su1 su2 su3 su4)
l2=(1,2,3 4,3,2 4,7,6 3,2,1)
su1
AND 1,2,3
, su2
AND 4,3,2
,, su3
AND 4,7,6
, su4
AND 를 의미하는 명령을 실행하기 위해 두 개의 목록을 반복하고 싶습니다.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