Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- function fka
- {
- echo "Wybierz literke:"
- read k
- until [ "$k" = "k" ]; do
- if [ "$k" != "k" ]; then
- echo "Zle! Podany wpis jest pusty lub literka jest nieprawidlowa"
- read k
- fi
- done
- }
- function fkat
- {
- read kata
- ## quoting zmiennych ponizej w while - "$kata"
- ## jesli tego nie zrobisz, to jesli zmienna kata bedzie pusta, to efektywnie shell zobaczy: while [ -z ]; do
- ## a to jest blad skladni (syntax error)
- while [ -z $kata ]; do
- ## SPACJA! niestety shell jest wrazliwy na brak spacji, musisz pamietac o spacjach miedzy [ ] a argumentami
- if [ -z $kata] ; then
- echo "Zle! Nazwa katalogu nie moze byc pusta"
- fi
- read kata
- done
- # quoting zmiennych ponizej w while - "$kata"
- if [ -d $kata ] ; then
- echo ""
- echo "Nie utworzylem katalogu o nazwie $kata poniewaz juz istnieje."
- echo "Przerzucilem Cie do katalogu o nazwie $kata"
- echo "Znajdujesz sie w katalogu $kata"
- else
- mkdir $kata
- echo "Utworzyles katalog o nazwie: $kata"
- cd $kata
- echo "Katalog o nazwie $kata dziala poprawnie"
- echo "Znajdujesz sie teraz w nowym katalogu: $(pwd)"
- cd ..
- echo "Cofamy do glownego katalogu ze skryptem: $(pwd)"
- fi
- }
- function fplik
- {
- read plik
- while [ -z $plik ]; do
- if [ -z $plik ] ; then
- echo "Zle! Nazwa pliku nie moze byc pusta"
- fi
- read plik
- done
- ## -f, nie -e
- if [ -e $kata/$plik ] ; then
- echo "Nie utworzylem pliku o nazwie $plik poniewaz juz istnieje."
- cd $kata
- else
- ## quoting!
- ## jesli kata bedzie puste, to bedzie: touch /plik
- ## raczej nie o to chodzi
- ## jesli plik bedzie pusty, to bedzie: touch $kata/
- touch $kata/$plik
- echo "Plik o nazwie $plik nie istnieje, ale utworzylem go juz dla Ciebie :)"
- echo "Wypadaloby podziekowac teraz krotkim slowem: dzieki"
- read thx
- until [ "$thx" = "dzieki" ]; do
- echo "Nie podziekowales!. Zrob to teraz"
- read thx
- done
- fi
- }
- function fmenu
- {
- echo "Wybierz z ponizszego menu co chcesz zrobic"
- echo "1. Edytuj plik: $plik za pomoca Vi"
- echo "2. Usun plik: $plik"
- echo "3. Zakoncz skrypt"
- read krok
- while [ -z $krok ]; do
- echo "!!!Nie mozesz nic nie wybrac!!! Wybierz opcje od 1-3"
- echo ""
- echo "Wybierz z ponizszego menu co chcesz zrobic"
- echo "1. Edytuj plik: $plik za pomoca Vi"
- echo "2. Usun plik: $plik"
- echo "3. Zakoncz skrypt"
- read krok
- done
- }
- echo "PAMIETAJ! Skrypt dziala na katalogu, w ktorym aktualnie sie znajdujesz"
- echo "Sprawdz w jakim katalogu sie znajdujesz literka k"
- fka
- echo ""
- echo "Jestes w katalogu: $(pwd)"
- echo "Podaj nazwe katalogu do stworzenia:"
- fkat
- echo ""
- echo "Podaj nazwe pliku do stworzenia:"
- fplik
- clear
- echo ""
- echo "Teraz przejdzmy dalej"
- fmenu
- ## Przerobka
- ## nie ma sensu sprawdzac wartosci $krok skoro jedyna mozliwoscia wyjscia z petli jest i tak exit
- ## wiec petla moze isc w kolko az do exit co wychodzi w ogole ze skryptu
- while true; do
- case "$krok" in
- 1)
- ## rownosc sprawdza sie przez podwojny ==, nie pojedynczy inaczej masz syntax error
- if [ $krok = "1" ]; then
- echo "Wybrales krok nr 1 - edycja"
- vi $plik
- fi
- break
- ;;
- 2)
- ## rownosc sprawdza sie przez podwojny ==, nie pojedynczy inaczej masz syntax error
- if [ $krok = "2" ]; then
- echo "Wybrales krok nr 2 - usuniecie"
- echo "Usuniecie pliku musisz potwierdzic klawiszem y lub Y. Inaczej odrzuce"
- read ok
- # quoting zmiennych!
- if [[ $ok = y || $ok = Y ]]; then
- echo "Usuwam plik: $plik"
- rm -f $plik
- echo "Usunalem plik: $plik"
- ## 0 - dobrze, 1 - byl blad
- exit 0
- else
- echo "Niepoprawny wybor. Anulowalem proces usuwania"
- ## Poprawka: rob exit nr_statusu
- ## 0 - dobrze, 1 - byl blad
- exit 0
- fi
- ## BLAD LOGICZNY powyzej - w obu galeziach if/else robisz exit. Jesli robisz cos jak warunek ($ok == ..) jest
- ## prawdziwy, i robisz to tez gdy jest falszywy, to robisz to zawsze.
- ##Wiec zamiast tych obu exit 0 mozesz dac jeden exit 0 ponizej calego warunku if .. else .. fi, efekt bedzie ten sam:
- exit 0
- fi
- break
- ;;
- 3)
- if [ $krok = "3" ]; then
- exit
- fi
- break
- ;;
- ## I tu mozesz uzyc domyslnego warunku case, dzieki czemu nie musisz sprawdzac wszystkich wariantow w warunku
- ## petli:
- *)
- ## continue wraca do poczatku petli
- continue
- ;;
- esac
- done
- ## hmm a po co ten break? on jest poza petla, z ktorej mozna wyjsc tylko przez exit, wiec wykonanie nigdy nie dojdzie do tego co jest ponizej powyzszego "done"
- break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement