Witam,
potrzebuje pomocy ze skryptem na studia. Oto tresc:
Zadanie 3.3 Cillit
Program służy do przeniesienia pewnych niepotrzebnych plików do katalogu ``~/trashbin''. Jako parametry przyjmuje pliki do przeniesienia lub katalogi do przeszukania. Jeżeli jako którykolwiek parametr wystąpi ``-h'' - drukowana jest informacja o programie, jeżeli wystąpi ``-v'' - drukowany jest numer wesji. W obu przypadkach program nie wykonuje już swego głównego zadania. Jeżeli program otrzyma zerową liczbę parametrów, kończy się odpowiednim komunikatem na wyjściu kontrolnym.
Pliki są przenoszone do katalogu ``~/trashbin'' razem z całą swoją ścieżką. Jeżeli parametrem jest katalog, należy przeszukać rekurencyjnie jego podkatalogi w poszukiwaniu plików ``trashbin.cfg''. Każdy taki plik zawiera w kolejnych liniach nazwy plików lub wyrażenia regularne opisujące pliki do przeniesienia. Nazwy względne (nie zaczynające się od ``/'') należy rozwijać względem katalogu, w którym znajduje się plik ``trashbin.cfg''.
Uwaga: Spośród nazw, które są zawarte w plikach ``trashbin.cfg'', lub które wynikają z zawartych tam wyrażeń regularnych przenosić należy jedynie zwykłe pliki.
A to co sam napisalem.
#!/bin/sh
#przeszukanie parametrow z lini polecen
#w przypadku -v wyswietlana jest wersja programu
#w przypadku -h wyswietlana jest pomoc programu
for parametr in $*
do
case $parametr in
-v)
echo "Cillit wersja 1.0"
exit
;;
-h)
echo "\\nPOMOC PROGRAMU:\\n"
echo "\\tCillit - przenoszenie niepotrzebnych plikow do katalogou ~/trashbin\\n"
echo "SKLADNIA\\n\\t./cillit [-h] [-v] plik1|katalog1 [plik2|katalog2...]\\n"
echo "WYKONAL: Sebastian Wojtczak"
exit
;;
*)
;;
esac
done
# Jezeli nie podano zadnego parametru wyswietla pomoc
if test $# = 0
then
echo "\\nPOMOC PROGRAMU:\\n"
echo "\\tCillit - przenoszenie niepotrzebnych plikow do katalogou ~/trashbin\\n"
echo "SKLADNIA\\n\\t./cillit [-h] [-v] plik1|katalog1 [plik2|katalog2...]\\n"
echo "WYKONAL: sabcio"
exit
fi
# stworzenie katalogu trashbin w razie gdyby nie byl stworzony wczesniej
if ! [ -d ~/trashbin ]
then
mkdir ~/trashbin
fi
# Jezeli parametrem jest plik
for plik in $*
do
if [ -f $plik ]
then
cp $plik ~/trashbin
echo "Przenoszenie pliku: $plik"
fi
done
# Jezeli parametrem jest katalog
# przeszukuje go i przenosi pliki do ~/trashbin
for katalog in $*
do
if test -d $katalog
then
echo "Paramtrem jest katalog: $katalog"
echo "Szukam trashbin.cfg i przenosze pliki."
find $katalog -name "trashbin.cfg" | while read TRASH
do
cat $TRASH | while read PLIK
do
znak=`echo $PLIK | cut -c1`
dir=`dirname $TRASH`
if [ "$znak" == "/" ]
then
cp $PLIK ~/trashbin
else
cp $dir/$PLIK ~/trashbin
fi
done
done
fi
done
Uporalem sie z katalogami, jak widac wyzej. Wiem tez ze trashbin.cfg musi byc wczesniej zrobiony przez uzytkownika. Tym razem prowadzacy zaskoczyl nas tym ze parametrem moze byc jakis plik/katalog ze spacja w nazwie. Jeszcze sobie z tym nie poradzilem ale jezeli ktos ma pomysly to bylbym wdzieczny. Znalazlem sobie w googlach ze jest to zwiazane z poleceniem sed.
Pozdrawiam