ユーザーは範囲のリストを提供します。これを離散値のリストに変換する必要があります。
例えば
入力する
host[1-5],host7,host[13-15]
出力
host1,host2,host3,host4,host5,host7,host13,host14,host15.
この結果をどのように取得できますか?
ベストアンサー1
この試み:
hosts=($(echo "host[1-5],host7,host[13-15]" | sed 's/,/ /g'))
string=""
for h in ${hosts[@]}; do
if [[ ! ${h//[^0-9]/} =~ ^[0-9]$ ]]; then
for i in $(seq ${h//[^0-9]/ }); do
string+="${h%[*}$i,"
done
else
string+="$h,"
fi
done
echo "${string%,}"
出力:
host1,host2,host3,host4,host5,host7,host13,host14,host15,