Коллеги, прошу помощи в решении задачи. Сразу скажу что занимюсь фигнёй и онанизмом, но хотелось бы добить данную задачу именно на bash. Вообщем задача такова "Поиск циклических ссылок в xml/wsdl".
Пока возникла проблема при построении матрицы смежности. Как я делаю:
Массив array, который хранит в себе список всех ссылок на схемы.
Масси arr - матрица смежности.
Далее код с комментариями.
declare -a arr #обьявляю массив для матрицы смежности
rows=${#array[*]}
cols=${#array[*]}
row=0
#Начинаю его заполнять
while [ $row -lt $rows ] ;
do
col=0
#Эта конструкция из curl и sed вытаскивает все схемы и пишет в файл temp1.xml
curl -s ${array[$row]} | sed ':a; s/\(.*\)<!--.*-->/\1/g; t a; /<!--/ !b; N; ba' | sed 's/ /\n/g' | sed -n 's/^.*schemaLocation=\"\(.*\)\".*$/\1/gp' > temp1.xml
while [ $col -lt $cols ] ;
do
size=$(cat temp1.xml | wc -l) #если файл temp1.xml пустой, то строка матрицы смежности должна быть заполнена нулями
if [ $size -gt 0 ]; then
for ((a=0; a < $cols; a++))
do
index=$((row*cols+col))
arr[$index]=0
let "col+=1"
done
break
fi
#Остальное заполнение массива номерами элементами, чтобы пока не пусто было
index=$((row*cols+col))
arr[$index]=$index
let "col+=1"
done
let "row+=1"
done
На выходе, если файл temp1.xml пустой, то заполняется нулями следующая строка(row+1), а не та которая нужна. Просьба помочь найти ошибку в коде, что я неучёл?