Darmowy hosting online dla stacji roboczych

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

Przypisywanie wartości do zmiennych i stałych

Tutaj nasza wiedza o ekspansji naprawdę zaczyna się opłacać. Jak widzieliśmy, zmiennym przypisuje się wartości w ten sposób:

zmienna=wartość

gdzie zmienna jest nazwą zmiennej i wartość jest ciągiem znaków. W przeciwieństwie do niektórych innych języków programowania, powłoka nie zwraca uwagi na typ danych przypisanych do zmiennej; traktuje je wszystkie jako ciągi znaków. Możesz zmusić powłokę do ograniczenia przypisania do liczb całkowitych, używając ogłosić polecenie z -i opcja, ale podobnie jak w przypadku ustawiania zmiennych jako tylko do odczytu, jest to rzadko stosowane.

Należy zauważyć, że w zadaniu nie może być żadnych spacji między nazwą zmiennej, znakiem równości i wartością. Z czego więc może składać się wartość? Czegokolwiek, co możemy rozszerzyć do ciągu:


a=z

b="ciąg"

c="ciąg znaków i $b"


d=$(ls -l foo.txt) e=$((5 * 7)) f="\t\ta ciąg\n"

# Przypisz ciąg „z” do zmiennej a.

# Spacje muszą być ujęte w cudzysłów.

# Można stosować inne rozszerzenia, takie jak zmienne

# rozszerzono w zadaniu.

# Wyniki polecenia.

# Rozszerzenie arytmetyczne.

# Sekwencje specjalne, takie jak tabulatory i nowe linie.

a=z

b="ciąg"

c="ciąg znaków i $b"


d=$(ls -l foo.txt) e=$((5 * 7)) f="\t\ta ciąg\n"


W jednym wierszu można wykonać wiele przypisań zmiennych:



a=5 b="ciąg"

a=5 b="ciąg"


Podczas rozwijania nazwy zmiennych mogą być otoczone opcjonalnymi nawiasami klamrowymi „{}”. Jest to przydatne w przypadkach, gdy nazwa zmiennej staje się niejednoznaczna ze względu na otaczające ją


tekst. Tutaj próbujemy zmienić nazwę pliku z mój plik do mójplik1, używając zmiennej:



[ja@linuxbox ~]$ nazwapliku="mójplik" [ja@linuxbox ~]$ dotknij $filename [ja@linuxbox ~]$ mv $nazwapliku $nazwapliku1

mv: brak operandu pliku docelowego po `myfile' Aby uzyskać więcej informacji, spróbuj `mv --help'.

[ja@linuxbox ~]$ nazwapliku="mójplik" [ja@linuxbox ~]$ dotknij $filename [ja@linuxbox ~]$ mv $nazwapliku $nazwapliku1

mv: brak operandu pliku docelowego po `myfile' Aby uzyskać więcej informacji, spróbuj `mv --help'.


Ta próba się nie powiedzie, ponieważ powłoka interpretuje drugi argument mv polecenie jako nową (i pustą) zmienną. Problem można rozwiązać w ten sposób:



[ja@linuxbox ~]$ mv $nazwa_pliku ${nazwa_pliku}1

[ja@linuxbox ~]$ mv $nazwa_pliku ${nazwa_pliku}1


Dodając otaczające nawiasy klamrowe, powłoka nie interpretuje już końcowego 1 jako część nazwy zmiennej.

Skorzystamy z okazji, aby dodać do naszego raportu pewne dane, mianowicie datę i godzinę utworzenia raportu oraz nazwę użytkownika, który go stworzył:



#! / bin / bash

# Program do wyprowadzania strony z informacjami o systemie TITLE="Raport z informacjami o systemie dla $HOSTNAME"

CZAS_BIEŻĄCY=$(data +"%x %r %Z")

TIMESTAMP="Wygenerowano $CURRENT_TIME, przez $USER"


Echo "

$TYTUŁ

$TYTUŁ

$ZNACZNIK CZASOWY

"

#! / bin / bash

# Program do wyprowadzania strony z informacjami o systemie TITLE="Raport z informacjami o systemie dla $HOSTNAME"

CZAS_BIEŻĄCY=$(data +"%x %r %Z")

TIMESTAMP="Wygenerowano $CURRENT_TIME, przez $USER"


Echo "

$TYTUŁ

$TYTUŁ

$ZNACZNIK CZASOWY

"


Najlepsze przetwarzanie w chmurze dla systemu operacyjnego w OnWorks: