OnWorks Linux i Windows Online WorkStation

logo

Darmowy hosting online dla stacji roboczych

<Poprzedni | Spis treści | Następne>

Zmienne i stałe

Jest jednak problem z naszym skryptem. Zauważ, jak powtarza się ciąg „Raport informacji o systemie”? W przypadku naszego małego skryptu nie stanowi to problemu, ale wyobraźmy sobie, że nasz skrypt był naprawdę długi i mieliśmy wiele wystąpień tego ciągu. Gdybyśmy chcieli zmienić tytuł na inny, musielibyśmy go zmieniać w wielu miejscach, co mogłoby wymagać dużo pracy. Co by było, gdybyśmy mogli tak ułożyć skrypt, aby ciąg znaków pojawiał się tylko raz, a nie wielokrotnie? To znacznie ułatwiłoby przyszłą konserwację skryptu. Oto jak moglibyśmy to zrobić:



#! / bin / bash


# Program wyświetlający stronę z informacjami o systemie


title="Raport informacji o systemie"


Echo "

$tytuł

$tytuł

"

#! / bin / bash


# Program wyświetlający stronę z informacjami o systemie


title="Raport informacji o systemie"


Echo "

$tytuł

$tytuł

"


Tworząc zmienna o imieniu tytuł i przypisując mu wartość „Raport informacji o systemie”, możemy skorzystać z rozwijania parametrów i umieścić ciąg znaków w wielu lokalizacjach.

Jak zatem stworzyć zmienną? Proste, po prostu z niego korzystamy. Gdy powłoka napotyka zmienną, automatycznie ją tworzy. Różni się to od wielu języków programowania, w których zmienne muszą być jawnie Deklarowana lub zdefiniowane przed użyciem. Powłoka jest pod tym względem bardzo luźna, co może prowadzić do pewnych problemów. Rozważmy na przykład następujący scenariusz rozgrywany w wierszu poleceń:


[ja@linuxbox ~]$ foo="tak" [ja@linuxbox ~]$ powtórz $foo tak

[ja@linuxbox ~]$ powtórz $głupca


[ja@linuxbox ~]$

[ja@linuxbox ~]$ foo="tak" [ja@linuxbox ~]$ powtórz $foo tak

[ja@linuxbox ~]$ powtórz $głupca


[ja@linuxbox ~]$


Najpierw przypisujemy zmiennej wartość „tak”. bla, a następnie wyświetl jego wartość za pomocą przegapić. Następnie wyświetlamy wartość nazwy zmiennej zapisanej błędnie jako „fool” i otrzymujemy pusty wynik. Dzieje się tak, ponieważ powłoka szczęśliwie utworzyła zmienną oszukać kiedy go napotkał, i nadał mu domyślną wartość nic lub pustą. Z tego dowiadujemy się, że musimy zwracać szczególną uwagę na naszą pisownię! Ważne jest również, aby zrozumieć, co naprawdę wydarzyło się w tym przykładzie. Z naszego poprzedniego spojrzenia na to, jak powłoka wykonuje ekspansje, wiemy, że polecenie:



[me@linuxbox ~]$ echo $foo

[me@linuxbox ~]$ echo $foo


ulega ekspansji parametrów i skutkuje:



[me@linuxbox ~]$ echo tak

[me@linuxbox ~]$ echo tak


Natomiast polecenie:



[me@linuxbox ~]$ echo $głupiec

[me@linuxbox ~]$ echo $głupiec


rozwija się w:



[me@linuxbox ~]$ echo

[me@linuxbox ~]$ echo


Pusta zmienna rozwija się w nic! Może to spowodować spustoszenie w przypadku poleceń wymagających argumentów. Oto przykład:



[ja@linuxbox ~]$ foo=foo.txt [ja@linuxbox ~]$ foo1=foo1.txt [ja@linuxbox ~]$ cp $foo $głupiec

cp: brak operandu pliku docelowego po `foo.txt'

[ja@linuxbox ~]$ foo=foo.txt [ja@linuxbox ~]$ foo1=foo1.txt [ja@linuxbox ~]$ cp $foo $głupiec

cp: brak operandu pliku docelowego po `foo.txt'


Aby uzyskać więcej informacji, użyj polecenia `cp --help'.

Aby uzyskać więcej informacji, użyj polecenia `cp --help'.


Przypisujemy wartości dwóm zmiennym, bla oraz głupku. Następnie wykonujemy a cp, ale błędnie napisz nazwę drugiego argumentu. Po rozszerzeniu cp do polecenia wysyłany jest tylko jeden argument, choć wymaga dwóch.

Istnieją pewne zasady dotyczące nazw zmiennych:

1. Nazwy zmiennych mogą składać się ze znaków alfanumerycznych (liter i cyfr) oraz znaków podkreślenia.

2. Pierwszym znakiem nazwy zmiennej musi być litera lub znak podkreślenia.

3. Niedopuszczalne są spacje i znaki interpunkcyjne.

Słowo „zmienna” oznacza wartość, która się zmienia i w wielu zastosowaniach zmienne są używane w ten sposób. Jednak zmienna w naszej aplikacji, tytuł, jest używany jako stały. Stała przypomina zmienną pod tym względem, że ma nazwę i zawiera wartość. Różnica polega na tym, że wartość stałej nie ulega zmianie. W aplikacji wykonującej obliczenia geometryczne możemy zdefiniować PI jako stałą i przypisz jej wartość 3.1415, zamiast używać tej liczby dosłownie w całym programie. Powłoka nie rozróżnia zmiennych i stałych; służą głównie wygodzie programisty. Powszechną konwencją jest używanie wielkich liter do oznaczania stałych i małych liter w przypadku prawdziwych zmiennych. Zmodyfikujemy nasz skrypt, aby był zgodny z tą konwencją:



#! / bin / bash

# Program wyświetlający stronę z informacjami o systemie TYTUŁ="Raport informacji o systemie Dla $HOSTNAME" Echo "

$TYTUŁ

$TYTUŁ

"

#! / bin / bash

# Program wyświetlający stronę z informacjami o systemie TYTUŁ="Raport informacji o systemie Dla $HOSTNAME" Echo "

$TYTUŁ

$TYTUŁ

"


Skorzystaliśmy również z okazji, aby urozmaicić nasz tytuł, dodając wartość zmiennej powłoki

NAZWA HOSTA. To jest nazwa sieciowa urządzenia.


obraz

Note: Powłoka faktycznie umożliwia wymuszenie niezmienności stałych poprzez użycie metody ogłosić wbudowane polecenie z -r opcja (tylko do odczytu). Gdybyśmy przydzielili TYTUŁ tą drogą:


zadeklaruj -r TITLE="Tytuł strony"


powłoka uniemożliwiłaby późniejsze przypisanie do TYTUŁ. Ta funkcja jest rzadko używana, ale istnieje w przypadku bardzo formalnych skryptów.


obraz


 

Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: