Ааааа, нужна помощь,
подскажите, плз, кто сможет разобраться в том, что я понаписал...#!/bin/bash
[...]
declare -a ARRAY
let count=0
for LINE in $LINES; do
let ind=$RESERV+3
let ind=$count*$ind+1
ARRAY[$ind]=`echo ${LINE}|sed -e '/\([^_]*\).*/s//\1/p'|sed q`
echo "("$count") ("$ind") ("${ARRAY[$ind]}")" # отладка
let ind+=1
ARRAY[$ind]=`echo ${LINE}|sed -e '/[^_]*[_]\([^_]*\).*/s//\1/p'|sed q`
echo "("$count") ("$ind") ("${ARRAY[$ind]}")" # отладка
NUMBERS=`echo ${LINE}|sed -e '/[^_]*[_][^_]*[_]\(.*\)/s//\1/p'|sed q|sed 's/_/ /g'`
for NUMBER in $NUMBERS; do
let ind+=1
ARRAY[$ind]=$NUMBER
echo "("$count") ("$ind") ("${ARRAY[$ind]}")" # отладка
done
let count+=1
echo "${ARRAY[@]}"
done
[...]
Собственно проблема с массивом.
Каждое объявление нового элемента массива воспринимается как переопределение самого массива.
Т.е. то что я привел выше возвращает следующее
(0) (1) (код1)
(0) (2) (наименование1)
(0) (3) (4661544318)
(0) (4) (551868)
(0) (5) (816861644)
...
816861644
P.S.
Для понимания:
LINES имеют вид <код>_<наименование>_<номер1>_<номер2>_<номер3>_<номер4>_<номер5>_<номер6>_<номер7>_<номер8>_..._<номерX>
таких строк несколько миллионов...
RESERV соответственно равен количеству номеров + 3
Предполагалось что-то вроде двумерного массива:
код1 наименование1 null номер11 номер12 номер13 ...
код2 наименование2 null номер21 номер22 номер23 ...
код3 наименование3 null номер31 номер32 номер33 ...
Без массива дальше не обойтись, и делать нужно только на bash