2つの変数リストがある場合:(2番目のリストでは、スペースは要素の区切り文字です。)
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を意味するコマンドを実行するために、2つのリストを繰り返したいと思います。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