wówczas wszysktie paramety są jednym elementem. Dostęp do parametrów
w ten sposób osiągamy poprzez - <strong>$*</strong>.
</p>
+ <h3 id="18.2.7.parameterexpression">18.2.7. Wyrażenie parametru</h3>
+ <p>
+ 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 (<strong>${}</strong>)
+ pomiędzy nawiasami zapisuje się nazwę zmiennej, już bez znaku
+ dolara.
+ </p>
+<pre class="code-block">
+wget https://ftp.server.com/example/${ARCH}/${VERSION}/file.tgz
+</pre>
+ <p>
+ 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.
+ </p>
+ <h3 id="18.2.8.exitcode">18.2.7. Exitcode - wartość zwracana przez program</h3>
+ <p>
+ 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.
+ </p>
+ <ul>
+ <li><strong>0</strong> - program poprawnie wykonał swoje zadanie.</li>
+ <li><strong>!0</strong> - (wartość inna niż 0), podczas działania
+ program nie mógł poprawnie wykonać swoich zadania z różnych
+ powodów.</li>
+ </ul>
+ <p>
+ 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
+ <strong>1</strong> 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.
+ </p>
+ <h2 id="18.3.condtionalexpressions">18.3. Wyrażenia warunkowe</h2>
+ <p>
+ 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
+ <strong>generują kod wyjścia</strong>: <em>0</em> - dla
+ <strong>prawdy</strong> i <em>1</em> - dla <strong>fałszu</strong>.
+ Warto mieć to na uwadzę, aby podczas debugowania nie zastanawiać się
+ dlaczego nasz warunek zwraca 0, a wykonywany jest blok kodu dla
+ prawdy.
+ </p>
+ <h3 id="18.3.1.conditionalinstructions">18.3.1. Instrukcje warunkowe</h3>
+ <p>
+ 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.
+ </p>
+ <p>
+ W BASH-u do dyspozycji mamy takie instrukcje jak <strong>[</strong>,
+ <strong>test</strong>, <strong>[[</strong>. Pierwsze dwie instrukcje
+ są identyczne i najczęściej instrukcja <em>[</em> jest
+ przedstawiana jako alias instrukcji <em>test</em>, która występuje
+ nie tylko BASH-u, ale w większości powłok Uniksowych. Inną instrukcją
+ jest <em>[[</em> jest klasyczny <em>test</em> jednak jego
+ funkcjonalność została rozszerzona, jednym z takich rozszerzeń jest
+ sprawdzenie czy np. podany ciąg znaków pasuje do nazwy wieloznacznej.
+ Instrukcji <em>[[</em> nie będziemy tutaj omawiać.
+ </p>
+ <p>
+ 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:
+ </p>
+<pre class="code-block">
+[ -f $HOME/testfile.txt ]
+</pre>
+ <p>
+ Ten warunek sprawdzi czy plik
+ <code class="code-inline">$HOME/testfile.txt</code> jest zwykłym
+ plikiem.
+ </p>
+ <p>
+ 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 (<em><</em>) czy większości (<em>></em>),
+ zamiast nich musimy używać specjalnie przygotowanych na tę okazję
+ zamienników:
+ </p>
+ <ul>
+ <li><strong>-lt</strong> - mniejsze niż,</li>
+ <li><strong>-gt</strong> - większe niż,</li>
+ <li><strong>-eq</strong> - równe,</li>
+ <li><strong>-ne</strong> - nierówne.</li>
+ </ul>
+ <p>
+ Nie będę tutaj wszysktich wypisywał, wszystkie operatory wraz tymi
+ jednoargumentowymi znajdziemy na stronie podręcznika polecenia
+ <em>test</em> lub na stronie podręcznika powłoki BASH w sekcji
+ <em>CONDITIONAL EXPRESSIONS</em>. 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 (<strong>=</strong>), a nie dwóch jak w przypadku innych
+ języków. Warto mieć to uwadze.
+ </p>
+ <p>
+ Instukcje warunkowe na podstawie przekazanych przez programistę
+ warunków, zwracaja kod wyjscia, który najczęściej interpretowany jest
+ przez konstrukcje warnukowe.
+ </p>
+ <h3 id="18.3.2.if">18.3.2. Konstrukcje warunkowa - if</h3>
+ <p>
+ 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 <em>if-then-else</em>.
+ </p>
+ <p>
+ Konstrukcja <em>if-then-else</em>, jest podstawową konstrukcją
+ warunkową opartą o wynik jednej instrukcji warunkowej oraz
+ zawierającą dwa bloki kodu, dla prawdy oraz fałszu.
+ </p>
+<pre class="code-block">
+if warunek; then
+ #Blok kodu dla prawdy
+else
+ #Blok kodu dla fałszu
+fi
+</pre>
+ <p>
+ Konstrukcja rozpoczyna się od słowa kluczowego
+ <code class="code-inline">if</code>, oznacza on początek konstrukcji,
+ następnie obok znajduje się <code class="code-inline">warunek</code>,
+ 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 <strong>obowiązkowo występuje średnik</strong>,
+ następnie słowo kluczowe <code class="code-inline">then</code>
+ otwierające blok kodu dla sytuacji, w której warunek zwrócił kod
+ wyjścia <strong>równy 0</strong> (potocznie nazwywany prawdą). Po
+ tym bloku występuje słowo kluczowe
+ <code class="code-inline">else</code> 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
+ <code class="code-inline">fi</code>, zamykające blok <em>else</em>
+ oraz całą konstrukcję.
+ </p>
+ <p>
+ Konstrukcję <em>if-then-else</em> można rozszerzyć od dodatkowy
+ blok warunkowy <em>elif</em>. W momencie interpretacji takiej
+ konstrukcji BASH sprawdzi na początek warunek przy <em>if</em>
+ następnie przy <em>elif</em> i jeśli oba te warunki oba te warunki
+ zwrócą niezerowy kod wyjścia, wtedy zostaną wykonane instrukcje
+ zapisane w bloku <em>else</em>. Warto dodać, że nie ma limitu w
+ ilości dodatkowych warunków (<em>elif</em>) tworząc przy tym całą
+ kaskadę. Ponizej znajdue się przykład poglądowy przezentujący
+ konstrukcję <em>if-then-elif-else</em>:
+ </p>
+<pre class="code-block">
+if warunek; then
+ #Blok dla prawdy warunku;
+elif warunek2; then
+ #Blok dla prawdy warunku2;
+else
+ #Blok dla fałszu obu warunków;
+fi
+</pre>
+ <h3 id="18.3.2.case">18.3.2. Konstrukcja warunkowa - case</h3>
</div>
<p style="margin: 15px; padding: 0; outline: 0;">
2024; COPYLEFT; ALL RIGHTS REVERSED;