From: xf0r3m Date: Mon, 13 May 2024 12:32:19 +0000 (+0200) Subject: Kontynuowanie tworzenia dodatku A. Podrozdział 18.3.3. X-Git-Url: https://gitweb.morketsmerke.org/?a=commitdiff_plain;h=d5089d58cf6aafe118c1147122ff2754127f9d30;p=mmdev.git Kontynuowanie tworzenia dodatku A. Podrozdział 18.3.3. --- diff --git a/articles/terminallog/Linux.Podstawy.html b/articles/terminallog/Linux.Podstawy.html index ba33e8d..4f54138 100644 --- a/articles/terminallog/Linux.Podstawy.html +++ b/articles/terminallog/Linux.Podstawy.html @@ -13721,6 +13721,181 @@ $ ./test.sh foo bar wówczas wszysktie paramety są jednym elementem. Dostęp do parametrów w ten sposób osiągamy poprzez - $*.

+

18.2.7. Wyrażenie parametru

+

+ Wyrażenie parametru posiada w BASH-u kilka funkcji. Jednak chyba + najważniejszą oraz tą, która wymaga zapamiętania jest separacja + nazwy zmiennej od pozostałych elementów, jest to szczególnie + przydatne gdy scieżki w instrukcjach zawierają zmienne. + Wyrażenie parametru jest przedstawiane za pomocą pary nawiasów + klamrowych poprzezdzonych znakiem dolara (${}) + pomiędzy nawiasami zapisuje się nazwę zmiennej, już bez znaku + dolara. +

+
+wget https://ftp.server.com/example/${ARCH}/${VERSION}/file.tgz
+
+

+ Oczywiście poza funkcją separacyjną wyrażenie parametru kilka innych + zastosowań, jedno już zostało tutaj wymienione, jest to dostęp do + parametrów pozycyjnych powyżej 10-tej pozycji. +

+

18.2.7. Exitcode - wartość zwracana przez program

+

+ Niektóre narzędzie wykorzystywane przez nas do pracy w dystrybucjach + Linuksa, zostają przez nas uruchomione i zaraz po tym zostaje nam + zwrócony znak zachęty. I tak naprawdę to nie wiemy czy program + wykonał swoje zadanie pomyślnie czy też nie. Nie mniej jednak + większość programów działających na Uniksa zwraca takzwany kod + wyjścia. +

+ +

+ W przypadku wartości nie zerowych programiści mają cały wachlarz + możliwości na opisanie co poszło nie tak, zwracając kod wyjścia + inny niż 0. Do dyspozycji mają od 1 - 255 możliwości. Kod wyjścia + 1 jest najczęściej wykorzystywany jako błąd ogólny + i ta wartość jest najczęsciej zwracana przez programy. Programy + raczej sporadycznie korzystają z pozostałych wartości, oczywiście + wszystko pozostaje w rękach programistów. +

+

18.3. Wyrażenia warunkowe

+

+ Rozpoczynając omawianie wyrażeń warunkowych, warto sobie wyjaśnić, + że w BASH-u nie operujemy na wartościach logicznych. Na wartościach + logicznych operują polecenie wykonujące sprawdzenie danego wyrażenia + warunkowego. Na podstawie wyniku tego wyrażnia narzędzia te + generują kod wyjścia: 0 - dla + prawdy i 1 - dla fałszu. + Warto mieć to na uwadzę, aby podczas debugowania nie zastanawiać się + dlaczego nasz warunek zwraca 0, a wykonywany jest blok kodu dla + prawdy. +

+

18.3.1. Instrukcje warunkowe

+

+ Instrukcjami warunkowymi możemy nazwać polecenia, które zwrócą nam + odpowiedni kod wyjścia na podstawie testu logicznego podanego jako + argument. Zazwyczaj zapisanie takie testu nie różni się niczym od + zapisania warunku w innych językach. +

+

+ W BASH-u do dyspozycji mamy takie instrukcje jak [, + test, [[. Pierwsze dwie instrukcje + są identyczne i najczęściej instrukcja [ jest + przedstawiana jako alias instrukcji test, która występuje + nie tylko BASH-u, ale w większości powłok Uniksowych. Inną instrukcją + jest [[ jest klasyczny test jednak jego + funkcjonalność została rozszerzona, jednym z takich rozszerzeń jest + sprawdzenie czy np. podany ciąg znaków pasuje do nazwy wieloznacznej. + Instrukcji [[ nie będziemy tutaj omawiać. +

+

+ Instrukcje warunkowe do wykonania warunku logicznego potrzebujemy + dwóch operandów oraz operatora lub jednego operandu oraz operatora, + ponieważ wśród operacji warunkowych istnieją operacje + jednoargumentowe. Zazwyczaj przeprowadzane są one ścieżkach + wskazujących plik lub katalog. Takich jak na przykład: +

+
+[ -f $HOME/testfile.txt ]
+
+

+ Ten warunek sprawdzi czy plik + $HOME/testfile.txt jest zwykłym + plikiem. +

+

+ Warunki które wymagają dwóch operatorów, to zazwyczaj takie jakie + znamy z lekcji matematyki: a > b, d <= e itd. Przyczym tutaj + warto przypomnień, że zapis instrukcji warunkowych (warunków), jest + jednocześnie zapisem polecenia, tak więc nie można użyć znaków + mniejszości (<) czy większości (>), + zamiast nich musimy używać specjalnie przygotowanych na tę okazję + zamienników: +

+ +

+ Nie będę tutaj wszysktich wypisywał, wszystkie operatory wraz tymi + jednoargumentowymi znajdziemy na stronie podręcznika polecenia + test lub na stronie podręcznika powłoki BASH w sekcji + CONDITIONAL EXPRESSIONS. Mimo to warto zaznaczyć, że te + wyżej wymienione operatory wymagają całkowitych (liczb całkowitych) + operandów, a przyrównanie ciągów znaków wymaga pojednyczego znaku + równości (=), a nie dwóch jak w przypadku innych + języków. Warto mieć to uwadze. +

+

+ Instukcje warunkowe na podstawie przekazanych przez programistę + warunków, zwracaja kod wyjscia, który najczęściej interpretowany jest + przez konstrukcje warnukowe. +

+

18.3.2. Konstrukcje warunkowa - if

+

+ Konstrukcje warunkowe są elementem kontrolnym w programowaniu. + Ich zadaniem jest wykonanie określonych instrukcji w determinowanych + na podstawie przekazanej instrukcji warunkowej. I najprostszym tego + typu konstrukcją jest if-then-else. +

+

+ Konstrukcja if-then-else, jest podstawową konstrukcją + warunkową opartą o wynik jednej instrukcji warunkowej oraz + zawierającą dwa bloki kodu, dla prawdy oraz fałszu. +

+
+if warunek; then
+  #Blok kodu dla prawdy
+else
+  #Blok kodu dla fałszu
+fi
+
+

+ Konstrukcja rozpoczyna się od słowa kluczowego + if, oznacza on początek konstrukcji, + następnie obok znajduje się warunek, + warunek może być instrukcją warunkową, ale może być rownież + poleceniem lub jego podstawieniem - czymś co jest nam wstanie + zwrócić kod wyjścia. Po warunku obowiązkowo występuje średnik, + następnie słowo kluczowe then + otwierające blok kodu dla sytuacji, w której warunek zwrócił kod + wyjścia równy 0 (potocznie nazwywany prawdą). Po + tym bloku występuje słowo kluczowe + else otwierając tym samym blok + kodu dla każdej innej wartości kodu wyjścia, która nie jest zerem. + Na samym końcu znajduje się słowo kluczowe + fi, zamykające blok else + oraz całą konstrukcję. +

+

+ Konstrukcję if-then-else można rozszerzyć od dodatkowy + blok warunkowy elif. W momencie interpretacji takiej + konstrukcji BASH sprawdzi na początek warunek przy if + następnie przy elif i jeśli oba te warunki oba te warunki + zwrócą niezerowy kod wyjścia, wtedy zostaną wykonane instrukcje + zapisane w bloku else. Warto dodać, że nie ma limitu w + ilości dodatkowych warunków (elif) tworząc przy tym całą + kaskadę. Ponizej znajdue się przykład poglądowy przezentujący + konstrukcję if-then-elif-else: +

+
+if warunek; then
+  #Blok dla prawdy warunku;
+elif warunek2; then
+  #Blok dla prawdy warunku2;
+else
+  #Blok dla fałszu obu warunków;
+fi
+
+

18.3.2. Konstrukcja warunkowa - case

2024; COPYLEFT; ALL RIGHTS REVERSED;