入力する

入力する

ユーザーは範囲のリストを提供します。これを離散値のリストに変換する必要があります。

例えば

入力する

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,

おすすめ記事