View difference between Paste ID: N7ciWqQi and 0WN7H2Qw
SHOW: | | - or go back to the newest paste.
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-
	while [[ $krok = "1" || $krok = "2" || $krok = "3" ]]; do
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-
				exit
118+
119
## Przerobka
120
## nie ma sensu sprawdzac wartosci $krok skoro jedyna mozliwoscia wyjscia z petli jest i tak exit
121-
				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