From: xf0r3m Date: Fri, 10 May 2024 18:00:12 +0000 (+0200) Subject: Kontynuacja tworzenia dodatku A. Podrozdziała 18.2.6 - parametry pozycyjne. X-Git-Url: https://gitweb.morketsmerke.org/?a=commitdiff_plain;h=0083766dad11e9c37f17b0657d1f719190b77246;p=mmdev.git Kontynuacja tworzenia dodatku A. Podrozdziała 18.2.6 - parametry pozycyjne. --- diff --git a/articles/terminallog/Linux.Podstawy.html b/articles/terminallog/Linux.Podstawy.html index 14ccebe..ba33e8d 100644 --- a/articles/terminallog/Linux.Podstawy.html +++ b/articles/terminallog/Linux.Podstawy.html @@ -13565,7 +13565,7 @@ ls powłoki BASH. Myślę że upowszechniło się na tyle, że śmiało możemy powiedzieć o programowaniu w BASH-u.) zmienne są definiowane w prosty sposób. Podajemy nazwę zmiennej (identyfikator), następnie - znak równości (=) po tym znaku podajemy wartość. + znak równości (=) po tym znaku podajemy wartość. Ważne jest aby nie robić przerw między tymi elementami, wówczas nazwa zmiennej zostanie potraktowana jako polecenie (nazwa programu do uruchomienia). @@ -13573,6 +13573,154 @@ ls
 var=1;
 
+

+ Do tak zdefiniowanej zmiennej możemy się odwołać poprzedzając nazwę + zmiennej znakiem dolara ($). +

+
+echo "$var";
+
+

+ Polecenie echo wyświetli zawartość + zmiennej var na standardowym + wyjściu. +

+

18.2.2. Komentarze

+

+ Ciągi znaków oznaczone jako komentarze po przez + umieszczenie na ich początku krzyżyka (#) są + całkowicie ignorowane przez powłokę w trakcie wykonywania skryptu. +

+
+# To jest komentarz
+#Tresc komenentarza może przylegać do krzyzyka
+# lub może być miedzy nimi odstep
+
+

+ Komentarze mają służyć wyłącznie programiście. Ich zadaniem jest + możliwość dodawania notatek do kodu, w celu np. wyjaśnienia zawiłego + bloku kodu. +

+

18.2.3. Potoki

+

+ Potoki czy inaczej polecenia potokowe są + to ciągi poleceń połączonych ze sobą za pomocą mechnizmów + wejścia-wyjścia. +

+
+cat /etc/passwd | grep 'xf0r3m' | sed 's,/bin/bash,/bin/sh,'
+
+

+ W powyższym poleceniu, dane wejściowe programu + cat pochodzą z pliku, ale dane + wejściowe polecenia grep pochodzą + już ze standardowego wyjścia polecenia + cat. Zawartość pliku zostaje + przekazana na standardowej wejscie drugiego polecenia, które + wyszukuje odpowiedniego wzorca. Ta sama sytuacja tyczy się ostatniego + polecenia (sed). Potoki konstrułuje + się przy użyciu znaku potoku lub znaku kreski pionowej + (|). +

+

+ Potoki są przydatne gdy musimy przetworzyć w jakiś sposób dane, + wówczas sprowadzamy je do postaci strumienia. Każde z poleceń na + potoku wykonuje swoją działkę i przekazuje je dalej, aż trafiają one + do zmiennej lub na standardowej wyjście powłoki. Z prostej analogii + wygląda to trochę jak praca na linii produkcyjnej. +

+

+ Powyższy przykład ma duży potencjał optymalizacyjny swoją drogą, + ponieważ pierwsze polecenie można pominąć i podać pliki odrazu + poleceniu grep. +

+

18.2.4. Podstawienie polecenia

+

+ Mając omówione zmienne oraz potoki, to warto może połączyć ze sobą + te zagadnienia i zadać pytanie: w jaki sposób można zapisać w + zmiennej dane przetwarzane przez potok? +

+

+ Chcąc zapisać wynik działania potoku do zmiennej, należy wykorzystać + mechanizm zwany podstawieniem polecenia. Działa on + na takiej zasadzie, że w momencie napotkania tego mechnizmu przez + podpowłokę uruchamiana jest kolejna podpowłoka wykonująca polecenia + zapisane w tym przypadku w potoku w podstawieniu polecenia. Po + zakończeniu wartość zwracana jest przekazywana do zmiennej. + Podstawienie polecenia może mieć dwie postacie, można wykorzystać + lewe cudzysłowy (``) lub parę okrągłych nawiasów + poprzezdzonych znakiem dolara ($()). Obie te formy + są poprawne. Do niedawna istniała jedynie wersja z cudzysłowami. +

+
+var=$(grep 'xf0r3m' | sed 's,/bin/bash,/bin/sh,');
+# lub:
+var=`grep 'xf0r3m' | sed 's,/bin/bash,/bin/sh,'`;
+
+

18.2.5. Znaki cytowania

+

+ Jak było prawdopodobnie wspomniane o znakach cytowania w drugim + rozdziale. W BASH-u do dyspozycji mamy 3 rodzaje cudzysłowów: +

+
    +
  • Lewy cudzysłów - (`) - jeden z operatorów + podstawienie polecenia.
  • +
  • Pojedynczy cudzysłów - (') - cytowanie dosłowne, + wszystko zapisane pomiędzy tymi znakami zostanie potraktowane jako + ciąg znaków. BASH nie będzie próbować interpretować, żadnych + treści w tym i instrukcji.
  • +
  • Podwójny cudzysłów - (") - cytowanie niedosłowne, + Występujące wewnątrz odwłania do zmiennych czy podstawienia + polecenia oraz inne mechnizmy i instrukcje zostaną przez BASH + zinterpretowane i wykonane, wówczas wyniki działania BASH-a + uzupełnią zapisany ciąg znaków.
  • +
+

+ Należy o tym pamiętać! Że cudzysłowy w powłoce są rozróżniane i mają + różne funkcje. Szczególnie może mieć to znaczenie przy takich + poleceniach jak sed czy grep. +

+

18.2.6. Parametry pozycyjne

+

+ Przekazanie do skryptu informacji jest jak najbardziej możlwe, + oczywiście możemy zrobić to jak przypadku innych języków - podczas + działania programu poprosić o podanie danych wejściowych. Możemy + również użyć mechanizmy parametrów pozycyjnych, + które pozwolą nam na przekazanie danych wejściowych podczas + uruchamiania skryptu. +

+
+$ ./test.sh foo bar
+
+

+ Dostęp do tak przekazanych danych można uzyskać poprzez odwłanie się + do numeru parametru: +

+
+#!/bin/bash
+
+echo "1: $1";
+echo "2: $2";
+#
+
+$ ./test.sh foo bar
+1: foo
+2: bar
+

+ Parametry pozycyjne są czesto wykorzysywane do implementowania + opcji skryptów. Paramentrów jest maksymalnie 10 (chociaż jest mozliwe + jest uzyskanie dostępu do parametrów powyżej 10 za pomocą mechanizmu + wyrażenia parametru. +

+

+ Dostęp do całej listy parametrów pozycyjnych możemy uzyskać na dwa + sposoby. Oba są warte poznania. Pierwszym z nich jest lista + parametrów, w której każdy jest osobnym elementem. Dostęp do niej + uzyskujemy poprzez - $@ - tego typu odwołanie się. + Innym sposobem dostęp do parametrów jako pojedynczego ciagu znaków, + wówczas wszysktie paramety są jednym elementem. Dostęp do parametrów + w ten sposób osiągamy poprzez - $*. +

2024; COPYLEFT; ALL RIGHTS REVERSED;