2つの変数のリストを繰り返し、その順序をコマンドに割り当てます。

2つの変数のリストを繰り返し、その順序をコマンドに割り当てます。

2つの変数リストがある場合:(2番目のリストでは、スペースは要素の区切り文字です。)

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

su1AND 1,2,3su2AND 4,3,2、、su3AND 4,7,6su4ANDを意味するコマンドを実行するために、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

おすすめ記事