例:
$ eval echo "{x,y,z}\ --opt\; "
x --opt; y --opt; z --opt;
2番目のリストが{1,2,3}
あり、その長さが最初の(初期)リストの長さと同じであるとします。
質問:
- 農産物の作り方
bash
:
x --opt 1; y --opt 2; z --opt 3;
- 製品の作成方法
bash
(例:リストの要素を参照{x,y,z}
):
x --opt x; y --opt y; z --opt z;
単一の裏地が好ましい。
ベストアンサー1
ブレーキ拡張はすべての可能なペアを生成し、両方のリストを並列に巡回しません。
$ echo {x,y,z}' --opt; '{1,2,3}
x --opt; 1 x --opt; 2 x --opt; 3 y --opt; 1 y --opt; 2 y --opt; 3 z --opt; 1 z --opt; 2 z --opt; 3
必要な出力を生成するには、他のものを使用する必要があります。たとえば、配列のインデックスを繰り返す場合は、次のようになります。
#! /bin/bash
opt1=(x y z)
opt2=(1 2 3)
for i in "${!opt1[@]}" ; do
printf '%s --opt %s; ' "${opt1[i]}" "${opt2[i]}"
done
echo
または連想配列を使用します。
#! /bin/bash
declare -A opts=([x]=1 [y]=2 [z]=3)
for i in "${!opts[@]}" ; do
printf '%s --opt %s; ' "$i" "${opts[$i]}"
done
echo