Генерация списка IPv6 в массив

Я написал этот сценарий некоторое время назад:

#!/bin/bash #Default number of IPs NUM_IPS=48 if [ "$1" != "" ]; then NUM_IPS=$1 fi #Example of IPv6 supplied 2001:41d0:0303:6e1b::/64 read -p "Starting IPv6 : " IPv6 IPv6_c=$(echo $IPv6 | sed -e 's/\/64//g' | sed -e 's/:*$//g') IPv6_e=$(sed -e 's#.*:\(\)#\1#' <<< "$IPv6_c") IPv6_s=$(echo $IPv6_c | sed -e "s/$IPv6_e//g") IPv6_t1=$(echo $IPv6 | sed -e 's/\/64//g') IPv6_t2=$(echo $IPv6_t1 | sed -e "s/$IPv6_c//g") IPv6_t3=$IPv6_t2"/64" for i in $(seq 0 $((NUM_IPS-1))); do printf "$IPv6_s%.4x$IPv6_t3\n" $((i+0x$IPv6_e)) done 

Но этот маленький скрипт просто печатает результаты. Теперь я хотел бы получить этот сгенерированный список IPv6 в массив для дальнейшей обработки. Как я могу это сделать?

заранее спасибо

PS. Если у вас есть лучший способ форматирования IPv6, не стесняйтесь поделиться;)

РЕДАКТИРОВАТЬ :

Пример результата переменных ipv6:

 Starting IPv6 : 2001:41d0:0303:6e1b::/64 IPv6_c......: 2001:41d0:0303:6e1b IPv6_e......: 6e1b IPv6_s......: 2001:41d0:0303: IPv6_t1.....: 2001:41d0:0303:6e1b:: IPv6_t2.....: :: IPv6_t3.....: ::/64 

Вот результат, который работает для меня:

 #!/bin/bash Generate_IPv6(){ #Variables if [ "$1" != "" ]; then NUM_IPS=$1 else NUM_IPS=48 fi if [ "$2" != "" ]; then IPv6=$2 else read -p "Starting IPv6 : " IPv6 fi IPv6_c=$(echo $IPv6 | sed -e 's/\/64//g' | sed -e 's/:*$//g') IPv6_e=$(sed -e 's#.*:\(\)#\1#' <<< "$IPv6_c") IPv6_s=$(echo $IPv6_c | sed -e "s/$IPv6_e//g") IPv6_t1=$(echo $IPv6 | sed -e 's/\/64//g') IPv6_t2=$(echo $IPv6_t1 | sed -e "s/$IPv6_c//g") IPv6_t3=$IPv6_t2"/64" for i in $(seq 0 $((NUM_IPS-1))); do IPv6_RR+="$(printf "$IPv6_s%.4x$IPv6_t3\n" $((i+0x$IPv6_e))) " done IFS=' ' read -r -a IPv6_ARR <<< "$IPv6_RR[0]" } Generate_IPv6 "$1" "$2" 

Таким образом, в основном IPv6_RR+="$(printf "$IPv6_s%.4x$IPv6_t3\n" $((i+0x$IPv6_e))) " создает список, разделенный пробелом, затем IFS=' ' read -r -a IPv6_ARR <<< "$IPv6_RR[0]" создает массив