Bash.. NEED HELP!!!

Sekcia: Programovanie 30.10.2010 | 00:44
Avatar dzejnik   Používateľ
Ahojte.. vedeli by ste mi prosim pomoct s tymto zadanim:

"Naprogramujte svoj príkaz find, ktorý prehľadá zadaný podstrom, nájde súbory, ktoré budú zadané a vykoná na nich uvedenú sériu príkazov. Zadanie vypracujte nasledovne: script musí obsahovať Usage, t.j. po nesprávnom zadaní parametrov výpise ich správne poradie a ukončí sa. Jednotlivé úseky programu okomentujte. Chybové stavy spracujte a vypíšte chybové hlásenie"

Nejak sa odvdacim :))

Džejna
    • Re: Bash.. NEED HELP!!! 30.10.2010 | 00:54
      Avatar Dare_devil Debian, OpenSuse  Používateľ
      Odvďačíš sa drinkom? to by bolo milé.. Ale teraz k veci..

      Ide o to, že my nie sme krysy, ktoré sedia za PC a robia robotu niekoho iného. Prejav vlastnú iniciatívu. Pokús sa vytvoriť program - časť programu, ktorú zvládaš a s čím potrebuješ pomôcť - to sa pýtaj...

      Čo ty na to?
      There is no flag large enough to cover the shame of killing innocent people
      • Re: Bash.. NEED HELP!!! 30.10.2010 | 00:55
        Avatar borg Arch, Debian jessie  Administrátor
        zdrzal som sa jedneho komentu, ktory som chcel pouzit ale zmazal som ho (hlada programatorske kurvicky?)
        • Re: Bash.. NEED HELP!!! 30.10.2010 | 00:59
          Avatar Dare_devil Debian, OpenSuse  Používateľ
          Nabudúce prosím ťa mierni trošku slová,aj keď.. umiernenosť by nebola na mieste v tomto prípade. Je pravda, že ženy používajú (často) svoje zbrane na využívanie programátorov, typu: Filip, ty si taký milučký, nespravíš mi domácu? :) Pôjdeme na zmrzku :). .. A pod.. Ale možno že táto je iná.

          Inak, každý nový školský rok je to tu rovnaké.. :D Možno že to nie je ani žena, takých premudretých tu už bolo.. :)
          There is no flag large enough to cover the shame of killing innocent people
          • Re: Bash.. NEED HELP!!! 30.10.2010 | 02:40
            Avatar dzejnik   Používateľ
            Fuuha dali ste ma dole :D Niesom taka.. len to potrebuje do nedele urobit a nemam o tom ani potuchy kedze nechodim na cvika a prednasky.. pretoze som na studijnom pobyte a tento predmet mam ako externy.. tak som chcela vyskusat ci sa niekto nechyti.. ja som takto pomohla mnohym ludom tak som dufala ze sa mi to nejak vrati spat ;) Dufam ze zajtra ked sa do toho pustim mi apson nejak pomozete ked budem zufala :) Diky chalani dobru noc ;)
    • Re: Bash.. NEED HELP!!! 30.10.2010 | 00:54
      Avatar borg Arch, Debian jessie  Administrátor
      > Nejak sa odvdacim :))

      napr. tak, ze najprv pouzijes google ci bing?
      • Re: Bash.. NEED HELP!!! 30.10.2010 | 02:41
        Avatar dzejnik   Používateľ
        A btw.. nemusíte byt taki kruti ;))
    • Re: Bash.. NEED HELP!!! 30.10.2010 | 13:53
      Avatar Dare_devil Debian, OpenSuse  Používateľ
      Zo srandy som sa to pokusil naprogramovat. V BASHi som nikdy pred tym neprogramoval, takze to bola pre mna skor vyzva.. Nepomaham ani tak tebe, skor mi slo o to vediet co dokazem ja za pomoci googlu.

      Program sa spusta za pomoci bash find.sh

      s parametrami: -p podmienka -d zlozka -c prikaz

      Testoval som to takto:

      v zlozke /data/bash/ som mal:

      zlozku TEST subor find.sh
      zlozka TEST obsahovala tieto styri subory: a.jpg b.jpg c.jpg d.png
      Program som aplikoval nasledovne:

      bash find.sh -p .jpg -d ./TEST -c rm
      ( find.sh bude pracovat so vsetkymi subormi ktore obsahuju .jpg , v zlozke ./TEST , a kazdy jeden vyhovujuci subor vymaze za pomoci prikazu rm )

      Vysledok som si overil tak, ze po vypisani obsahu zlozky ./TEST ( ls -L ./TEST ) mi ukazalo uz iba jeden existujuci subor - a to d.png, ktory nevymazalo na zaklade toho, ze nevyhovoval podmienke.

      #!/bin/bash

      # find.sh -p parameters -d directory -c command

      # zoznam premennych ktore pouzivam
      PARAMETER=
      DIRECTORY=
      COMMAND=
      WORKINGPATH=$(pwd)

      # funkcia ktora vypise usage
      usage()
      {
      cat << EOF

      Usage: -p parametre -d zlozka -c prikaz

      OPTIONS:
      -p Parametre pre najdenie suborov
      -d Zlozka, ktoru budeme prechadzat
      -c Prikaz ktory prevedieme pre kazdy vyhovujuci subor

      EOF
      }

      # nacitam parametre aj s hodnotami
      while getopts ":p:d:c:" Option; do
      case $Option in
      p)
      PARAMETER=$OPTARG;;
      d)
      DIRECTORY=$OPTARG;;
      c)
      COMMAND=$OPTARG;;
      esac
      done


      # podmienka, ci boli zadane vsetky parametre
      if [[ -z $PARAMETER ]] || [[ -z $DIRECTORY ]] || [[ -z $COMMAND ]]
      then
      #ked neboli, zavolaj usage a skonci program
      usage
      exit 1
      fi

      # podmienka, ak existuje subor list, vymazeme ho
      if [ -f list ]
      then
      rm list
      fi

      # vypiseme si zoznam suborov ktore vyhoveveli podmienke do suboru list
      ls -L $DIRECTORY|grep $PARAMETER >> $WORKINGPATH/list

      # nastavime sa do zlozky v ktorej operujeme
      cd $DIRECTORY

      # vypise zoznam po riadku a pre kazdy riadok zavola to co ma
      cat $WORKINGPATH/list | while read FILE ; do
      $COMMAND $FILE
      done

      cd $WORKINGPATH

      A ked prides do Kosic, ten drink si prosim...
      There is no flag large enough to cover the shame of killing innocent people