sdb
次のリストは、との間のマーカーを示していますsd$MAX
(MAX
範囲はc
- である可能性がありますz
)。
たとえば、
MAX=z
list=$(eval echo sd{b..$MAX})
echo $list
文字列は次のとおりです。 (例)
sdb sdc sdd sde sdf sdg sdh sdi sdj sdk sdl sdm sdn sdo sdp sdq sdr sds sdt sdu sdv sdw sdx sdy sdz
私の質問は、ループごとにリストを次の文字列に移動する方法です。
例:
for i in disk1 disk2 disk3 disk4 ..................
do
echo $i <...syntax...>
done
期待される出力
disk1 sdb
disk2 sdc
disk3 sdd
disk4 sde
.
.
.
ベストアンサー1
使用できる間接的な値の代わりに配列のインデックスを直接繰り返します。
与えられた
$ list=(sd{a..f})
$ echo "${list[@]}"
sda sdb sdc sdd sde sdf
それから
$ for i in "${!list[@]}"; do printf '%s %s\n' "disk${i}" "${list[$i]}"; done
disk0 sda
disk1 sdb
disk2 sdc
disk3 sdd
disk4 sde
disk5 sdf
本当に必要な方法で実行するには、ループしたい文字列要素から利用可能な整数インデックスを抽出する必要があります。たとえば、disk
パラメータ置換を使用して先行文字列を削除します。
for d in disk1 disk2 disk3 disk4; do printf '%s %s\n' "$d" "${list[${d##disk}]}"; done
disk1 sdb
disk2 sdc
disk3 sdd
disk4 sde