Покажи Публикации - thegold_u
* Виж публикациите на потр. | Виж темите на потр. | Виж прикачените файлове на потр
Страници: [1]
1  Програмиране / Конкурс bash-майсторът / Задачи кандидати -: May 29, 2008, 09:08
както казах при пускането на задачата, след две седмици ще пусна своя отговор.
сега го правя. Моля онези които мислят че могат да подобрят по някакъв начин
скрипта да го направят и да се свържат с мен.

/*---------------------------packscript.sh------------------------------*/

#!/bin/bash

#########################################################################
#                           #
#   Прави автоматично Packages файл за Дебиански пакети      #
#   от директорията в която е бил извикан и записва изхода в   #
#   директорията подадена като аргумент 1            #
#   Променливата packdir е тази променлива която определя      #
#   местоположението на .deb файлът в самият Package файл.      #
#   По принцип тя е празна но може да бъде подадена само       #
#   като втори параметър.                  #
#   При подаването й накрая след името на директорията      #
#   трябва да има наклонена черта               #
#                           #
#   Следват няколко примера с извикване на скрипта         #
#      ./packscript.sh . paketi/            #
#      ./packscript.sh ~               #
#      ./packscript.sh /mnt/distro paketni_fileove/      #
#      ./packscript.sh
#                           #
#                           #
#                  Написан от thegold_u   #
#                           #
#########################################################################

outdir="."
ORIG_PACK_FILE=""
niz=""
tmp_str=" "
nwl='
'
packdir=""

if [ $# -eq 2 ]
    then
   packdir="$2/"
    fi

if [ `ls Packages`='Packages' ]
    then
   ORIG_PACK_FILE=`cat Packages`
   ORIG_PACK_FILE="$ORIG_PACK_FILE$nwl$nwl$nwl"
    fi

for debfile in *.deb
    do
   dpkg --control $debfile contdir
   tmp_str=`cat contdir/control`

# конкатенираме променливата niz с информация за името на файлът

   niz="$niz$tmp_str$nwl"
   fileinfo="Filename: $packdir$debfile"
   niz="$niz$fileinfo$nwl"

# конкатенираме променливата niz с информация за md5 проверката

   integer=1
   for md5var in `md5sum $debfile`
       do
      if [ $integer -eq 1 ]
      then
          md5info="$md5var"
      fi
      let "integer = $integer + 1"
       done
   md5info="MD5sum: $md5info"
   niz="$niz$md5info$nwl"

# конкатенираме променливата niz с информация за размера на файлът

   integer=1
   for sizevar in `ls -la $debfile`
       do
      if [ $integer -eq 5 ]
          then
         sizeinfo="$sizevar"
          fi
      let "integer = $integer + 1"
       done
   sizeinfo="Size: $sizeinfo"
   niz="$niz$sizeinfo"
   niz="$niz$nwl$nwl$nwl"
    done

# Премахваме директорията contdir където сме съхранили файловете
# от control.tar.gz архива след това проверяваме дали на командния
# ред има зададени по-вече от нула параметъра и ако е така взимаме
# първият параметър като считаме че това е директорията където
# потребителят иска да запише Packages файлът.

rm -fr contdir

if [ $# -ge 1 ]
    then
   outdir=$1
    fi

echo "$ORIG_PACK_FILE$niz" > $outdir/Packages


Искрено ваш thegold_u
2  Програмиране / Конкурс bash-майсторът / Задачи кандидати -: May 14, 2008, 12:50
И така, тъй като форумът е хубав, а досега не съм видял задачи, то аз ще пусна първата.

Наскоро ми се наложи да си правя Package файл за свалените Debian-ски файлове. Пфу...
Много времеемка задача, ако имаш само архиватор и текстов редактор. За един или два файла сигурно става, но за стотици - не. Затова поставям задачата да се направи скрипт, който да взима всички файлове с разширение .deb, да прочита информацията от тях и да я запазва във файл с име Package. Не забравяйте да добавите и информация за размера на файла и MD5 проверка, а също, и името на файла. За онези, които не са запознати с формата на Package файла, да не се занимават. За останалите, смятам да пусна отговор на задачата си две седмици след пускането й, а именно от 14 май 2008г.

ЗАВИНАГИ ВАШ thegold_u


edit by neter: Редактирано, съгласно т.3 от правилата на форума. Нека не се повтаря '<img'>



Страници: [1]