]> gitweb.morketsmerke.org Git - mmdev.git/commitdiff
Kontynuowanie tworzenia dodatku A. Podrozdział 18.3.3.
authorxf0r3m <jakubstasinski@protonmaill.com>
Mon, 13 May 2024 12:32:19 +0000 (14:32 +0200)
committerxf0r3m <jakubstasinski@protonmaill.com>
Mon, 13 May 2024 12:32:19 +0000 (14:32 +0200)
articles/terminallog/Linux.Podstawy.html

index ba33e8d4d9918b3b6dfa22ce40f70c1283a25bab..4f541383701c5f4b38c390bdca13f09b0b2b93c1 100644 (file)
@@ -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 - <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 &gt; b, d &lt;= 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>&lt;</em>) czy większości (<em>&gt;</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;