次のループを実行する必要があります。
root1=path/to/root1
root2=path/to/root2
for i in {1..2}; do ${root${i}}; done
それいいえ希望の出力を提供します。
path/to/root1
path/to/root2
管理者提案スレッドは、私が望む結果につながらないソリューションを提供します。
for i in {1..2}; do \$root$i; done
出力:
$root1
$root2
答え1
シェルを使用すると仮定すると、bash
配列を使用したいようです。
root[1]=path/to/root1
root[2]=path/to/root2
for i in {1..2}; do
printf '%s\n' "${root[i]}"
done
または、割り当てをroot
単一の配列割り当てに書き込みます(bash
明示的なインデックス付けを使用しない限り、配列の最初のインデックスは0です)。
root=( path/to/root1 path/to/root2 )
for i in {0..1}; do
printf '%s\n' "${root[i]}"
done
および/または配列の値(インデックスではない)を繰り返します。
root=( path/to/root1 path/to/root2 )
for i in "${root[@]}"; do
printf '%s\n' "$i"
done
(単に配列を出力し、ループを必要とせず、printf '%s\n' "${root[@]}"
別の行に配列の値を印刷するだけで十分です)
通常、配列がどのインデックスを使用しているかわかりません(配列に連続していないインデックスがある可能性があるため)、利用可能なインデックスを繰り返すには、次の手順を繰り返します"${!root[@]}"
。
root=( path/to/root1 path/to/root2 )
for i in "${!root[@]}"; do
printf '%s\n' "${root[$i]}"
done