Bash.. NEED HELP!!!
"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
Pre pridávanie komentárov sa musíte prihlásiť.
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?
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.. :)
napr. tak, ze najprv pouzijes google ci bing?
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...