LinuxForum.Fans
Тема

Поиск циклических ссылок в xml/wsdl

Автор: SkyLine 2 сообщений 2778 просмотров
#338531

Коллеги, прошу помощи в решении задачи. Сразу скажу что занимюсь фигнёй и онанизмом, но хотелось бы добить данную задачу именно на bash. Вообщем задача такова "Поиск циклических ссылок в xml/wsdl".

Пока возникла проблема при построении матрицы смежности. Как я делаю:

Массив array, который хранит в себе список всех ссылок на схемы.
Масси arr - матрица смежности.

Далее код с комментариями.

text
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), а не та которая нужна. Просьба помочь найти ошибку в коде, что я неучёл?

#338533

Нашёл багу, if [ $size -gt 0 ] поправить на if [ $size -le 0 ].

Войдите или зарегистрируйтесь, чтобы ответить.