Advertisement
Guest User

Untitled

a guest
Jul 24th, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #!/bin/bash
  2.  
  3. function fka
  4. {
  5.     echo "Wybierz literke:"
  6.     read k
  7.     until [ "$k" = "k" ]; do
  8.         if [ "$k" != "k" ]; then
  9.         echo "Zle! Podany wpis jest pusty lub literka jest nieprawidlowa"
  10.         read k
  11.         fi
  12.     done
  13. }
  14.  
  15. function fkat
  16. {
  17.     read kata
  18.  
  19. ## quoting zmiennych ponizej w while - "$kata"
  20. ## jesli tego nie zrobisz, to jesli zmienna kata bedzie pusta, to efektywnie shell zobaczy: while [ -z  ]; do
  21. ## a to jest blad skladni (syntax error)
  22.  
  23.     while [ -z $kata ]; do
  24.  
  25. ## SPACJA! niestety shell jest wrazliwy na brak spacji, musisz pamietac o spacjach miedzy [ ] a argumentami
  26.  
  27.         if [ -z $kata] ; then
  28.             echo "Zle! Nazwa katalogu nie moze byc pusta"
  29.         fi
  30.             read kata
  31.     done
  32. # quoting zmiennych ponizej w while - "$kata"
  33.  
  34.     if [ -d $kata ] ; then
  35.         echo ""
  36.         echo "Nie utworzylem katalogu o nazwie $kata poniewaz juz istnieje."
  37.         echo "Przerzucilem Cie do katalogu o nazwie $kata"
  38.         echo "Znajdujesz sie w katalogu $kata"
  39.     else
  40.         mkdir $kata
  41.         echo "Utworzyles katalog o nazwie: $kata"
  42.         cd $kata
  43.         echo "Katalog o nazwie $kata dziala poprawnie"
  44.         echo "Znajdujesz sie teraz w nowym katalogu: $(pwd)"
  45.         cd ..
  46.         echo "Cofamy do glownego katalogu ze skryptem: $(pwd)"
  47.     fi
  48. }
  49.  
  50. function fplik
  51. {
  52.     read plik
  53.     while [ -z $plik ]; do
  54.         if [ -z $plik ] ; then
  55.             echo "Zle! Nazwa pliku nie moze byc pusta"
  56.         fi
  57.             read plik
  58.     done
  59.    
  60. ## -f, nie -e
  61.  
  62.     if [ -e $kata/$plik ] ; then
  63.         echo "Nie utworzylem pliku o nazwie $plik poniewaz juz istnieje."
  64.         cd $kata
  65.     else
  66.  
  67. ## quoting!
  68. ## jesli kata bedzie puste, to bedzie: touch /plik
  69. ## raczej nie o to chodzi
  70. ## jesli plik bedzie pusty, to bedzie: touch $kata/
  71.  
  72.         touch $kata/$plik
  73.         echo "Plik o nazwie $plik nie istnieje, ale utworzylem go juz dla Ciebie :)"
  74.         echo "Wypadaloby podziekowac teraz krotkim slowem: dzieki"
  75.         read thx
  76.         until [ "$thx" = "dzieki" ]; do
  77.             echo "Nie podziekowales!. Zrob to teraz"
  78.             read thx
  79.         done
  80.     fi
  81. }
  82.  
  83. function fmenu
  84. {
  85.     echo "Wybierz z ponizszego menu co chcesz zrobic"
  86.     echo "1. Edytuj plik: $plik za pomoca Vi"
  87.     echo "2. Usun plik: $plik" 
  88.     echo "3. Zakoncz skrypt"
  89.     read krok
  90.     while [ -z $krok ]; do
  91.         echo "!!!Nie mozesz nic nie wybrac!!! Wybierz opcje od 1-3"
  92.         echo ""
  93.         echo "Wybierz z ponizszego menu co chcesz zrobic"
  94.         echo "1. Edytuj plik: $plik za pomoca Vi"
  95.         echo "2. Usun plik: $plik" 
  96.         echo "3. Zakoncz skrypt"
  97.     read krok
  98.     done   
  99. }
  100.  
  101. echo "PAMIETAJ! Skrypt dziala na katalogu, w ktorym aktualnie sie znajdujesz"
  102. echo "Sprawdz w jakim katalogu sie znajdujesz literka k"
  103.  
  104. fka
  105.     echo ""
  106.     echo "Jestes w katalogu: $(pwd)"
  107.     echo "Podaj nazwe katalogu do stworzenia:"
  108.  
  109. fkat
  110.    
  111.     echo ""
  112.     echo "Podaj nazwe pliku do stworzenia:"
  113. fplik
  114.     clear
  115.     echo ""
  116.     echo "Teraz przejdzmy dalej"
  117.  
  118. fmenu
  119. ## Przerobka
  120. ## nie ma sensu sprawdzac wartosci $krok skoro jedyna mozliwoscia wyjscia z petli jest i tak exit
  121. ## wiec petla moze isc w kolko az do exit co wychodzi w ogole ze skryptu
  122.  
  123. while true; do
  124.     case "$krok" in
  125.     1)
  126. ## rownosc sprawdza sie przez podwojny ==, nie pojedynczy inaczej masz syntax error
  127.         if [ $krok = "1" ]; then
  128.         echo "Wybrales krok nr 1 - edycja"
  129.         vi $plik
  130.         fi
  131.         break
  132.         ;;
  133.     2) 
  134. ## rownosc sprawdza sie przez podwojny ==, nie pojedynczy inaczej masz syntax error
  135.         if [ $krok = "2" ]; then
  136.         echo "Wybrales krok nr 2 - usuniecie"
  137.         echo "Usuniecie pliku musisz potwierdzic klawiszem y lub Y. Inaczej odrzuce"
  138.         read ok
  139.  
  140. # quoting zmiennych!
  141.  
  142.             if [[ $ok = y || $ok = Y ]]; then
  143.                 echo "Usuwam plik: $plik"
  144.                 rm -f $plik
  145.                 echo "Usunalem plik: $plik"
  146. ## 0 - dobrze, 1 - byl blad
  147.  
  148.                 exit 0
  149.             else
  150.                 echo "Niepoprawny wybor. Anulowalem proces usuwania"
  151.  
  152. ## Poprawka: rob exit nr_statusu
  153. ## 0 - dobrze, 1 - byl blad
  154.                 exit 0
  155.             fi
  156.  
  157. ## BLAD LOGICZNY powyzej - w obu galeziach if/else robisz exit. Jesli robisz cos jak warunek ($ok == ..) jest
  158. ## prawdziwy, i robisz to tez gdy jest falszywy, to robisz to zawsze.
  159.  
  160. ##Wiec zamiast tych obu exit 0 mozesz dac jeden exit 0 ponizej calego warunku if .. else .. fi, efekt bedzie ten sam:
  161.             exit 0
  162.  
  163.         fi
  164.         break
  165.         ;;
  166.     3)
  167.         if [ $krok = "3" ]; then
  168.         exit
  169.         fi
  170.         break
  171.         ;; 
  172.  
  173. ## I tu mozesz uzyc domyslnego warunku case, dzieki czemu nie musisz sprawdzac wszystkich wariantow w warunku
  174. ## petli:
  175.  
  176.     *)
  177.  
  178. ## continue wraca do poczatku petli
  179.  
  180.         continue
  181.         ;;
  182.  
  183.     esac
  184. done
  185.  
  186. ## 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"
  187.     break
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement