Shell? Zmienny
Zmienne powłoki
Po zdefiniowaniu zmiennej, nazwy zmiennej bez znaku dolara ($, zmienne języka PHP jest to konieczne), takich jak:
your_name="w3write.com"
Zauważ, że nie ma miejsca pomiędzy zmienną nazwą i znakiem równości, które mogą być znane do ciebie i wszystkich języków programowania nie są takie same. Tymczasem nazwa zmiennej musi przestrzegać tych zasad nazewnictwa:
- Pierwszy znak musi być literą (az, AZ).
- Bez spacji, należy użyć znaku podkreślenia (_).
- Nie można używać znaków interpunkcyjnych.
- Nie można użyć słowa kluczowego (w bash polecenia help, aby przejrzeć dostępne zastrzeżone słowa kluczowe).
Ponadto wyraźnie bezpośrednie przypisanie można również przypisać wartości do zmiennych z wypowiedzi, takich jak:
for file in `ls /etc`
Powyższe stwierdzenie nazwa pliku / etc z obiegu.
Używanie zmiennych
Użyj określonej zmiennej, tak długo, jak nazwa zmiennej poprzedzoną znakiem dolara, jak poniżej:
your_name="qinjx" echo $your_name echo ${your_name}
Nazwa zmiennej poza nawiasy klamrowe są opcjonalne, a także nie w porządku, dodaj szelki, które pomogą wyjaśnić brzegowe zmiennych identyfikacyjnych, takich jak następującym przypadku:
for skill in Ada Coffe Action Java; do echo "I am good at ${skill}Script" done
Jeśli nie dają zmienne umiejętności plus szelki, napisanych echo "Jestem dobra w $ skillScript", interpreter położy $ skillScript jako zmienną (jej wartość jest pusta), wykonanie kodu, nie jest wynikiem znów oczekiwać tego samego.
Powiadom wszystkich zmiennych szelki, jest to dobra praktyka programowania.
Określonych zmiennych, może być ponownie zdefiniować, na przykład:
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
Zapis jest legalny, ale należy pamiętać, że podczas drugiego zadania nie można zapisać $ twoja_nazwa = "Alibaba", użyć zmiennej, gdy jest on dodawany do znaku dolara ($).
Tylko do odczytu zmiennych
Użyj polecenia zmienne readonly może być zdefiniowany jako tylko do odczytu zmiennej, wartość tylko do odczytu zmiennych nie mogą być zmieniane.
Poniższe przykłady próbować zmienić zmienne tylko do odczytu, którego wyniki zostaną podane:
#!/bin/bash myUrl="" readonly myUrl myUrl="http://www.w3write.com"
Uruchom skrypt z następującymi wynikami:
/bin/sh: NAME: This variable is read only.
Usuń zmienną
Użyj polecenia unset usunąć zmienną. Składnia:
unset variable_name
Zmiennej nie może być użyte ponownie, po czym usunięto. Komenda rozbrojony nie można usunąć zmienne tylko do odczytu.
Przykłady
#!/bin/sh myUrl="http://www.w3write.com" unset myUrl echo $myUrl
Przykłady realizacji powyższych nie będzie miał wyjścia.
Typy zmiennych
Podczas uruchamiania powłoki, będzie jednocześnie trzy parametry:
- 1) Zmienne lokalne Zmienne lokalne zdefiniowane w skrypcie lub polecenia jest ważny tylko w bieżącej instancji powłoki, inny program startowy powłoka nie może uzyskać dostęp do zmiennych lokalnych.
- 2) zmienne środowiskowe wszystkie programy, w tym program uruchomienia powłoki mogą uzyskać dostęp do zmiennych środowiskowych, niektóre aplikacje wymagają zmiennych środowiskowych, aby zapewnić ich prawidłowe działanie. Gdy jest to konieczne, skrypt powłoki może również zdefiniować zmienne środowiskowe.
- 3) zmienne powłoki powłoki zmienna jest specjalna zmienna ustawiana przez program Shell. shell zmiennej części zmiennej środowiskowej, niektóre są zmienne lokalne do zapewnienia normalnego funkcjonowania powłoki
Shell ciąg
programowania powłoki String jest najczęściej i użyteczne typy danych (z wyjątkiem liczb i łańcuchów, brakuje również inne rodzaje przydać), łańcuchy mogą być ujęty w apostrofy, cudzysłowy mogą być również wykorzystywane, lub może nie być w cudzysłowie. Różnica między pojedyncze i podwójne cudzysłowy w PHP jest podobny.
pojedyncze cudzysłowy
str='this is a string'
Pojedyncze cudzysłowów ograniczenia:
- Wszelkie znaki w apostrofach są wyprowadzane jako pojedynczy cudzysłów w zmiennej łańcuchowej jest nieważna;
- Pojedyncze cytowany łańcuchy nie mogą być wyświetlane w jednym cytatem (używaj apostrofów po znaku ucieczki ani).
Podwójne cudzysłowy
your_name='qinjx' str="Hello, I know your are \"$your_name\"! \n"
Dwukrotnie cytuje zalety:
- Podwójne cudzysłowy mogą mieć zmienną
- Podwójne cudzysłowy mogą pojawić się znak escape
String konkatenacji
your_name="qinjx" greeting="hello, "$your_name" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1
Uzyskaj długość ciągu
string="abcd" echo ${#string} #输出 4
Wyciąg podciąg
Poniższe przykłady z pierwszych dwóch ciągów znaków rozpocząć przechwytywanie czterech znaków:
string="w3big is a great site" echo ${string:1:4} # 输出 unoo
Znajdź podciąg
Znajdź znak "S" I lub stanowisko:
string="w3big is a great company" echo `expr index "$string" is` # 输出 8
Uwaga: Powyższy skrypt "` "anty-cytaty, a nie pojedyncze cudzysłowy" ' "Nie łudźcie się, oh.
tablica Shell
bash obsługuje tablicę jednowymiarową (nie obsługuje wielowymiarowe tablice), a nie określić rozmiar tablicy.
Podobnie jak w języku C, a indeks elementów tablicy z numerem 0 startu. Pobiera układu elementów do wykorzystania dolnego indeksu, indeks może być liczbą całkowitą lub wyrażenia arytmetycznego, którego wartość musi być większa niż lub równa 0.
Definiowanie tablic
In the Shell, należy użyć nawiasów do oznaczenia tablicy, elementów tablicy z "przestrzeń" symbole oddzielone. Ogólna postać tablicy jest zdefiniowana w następujący sposób:
数组名=(值1 值2 pl. 值n)
Na przykład:
array_name=(value0 value1 value2 value3)
lub
array_name=( value0 value1 value2 value3 )
Można również zdefiniować oddzielnie dla każdego elementu tablicy:
array_name[0]=value0 array_name[1]=value1 array_name[n]=valuen
Nie można korzystać z ciągłego wskaźnik i nie ma żadnych ograniczeń w tym przedziale.
Czytaj tablica
Ogólny format odczytywany jest wartość elementu tablicy:
${数组名[下标]}
Na przykład:
valuen=${array_name[n]}
Użyj symbolu @ można uzyskać tablicę wszystkich elementów, takich jak:
echo ${array_name[@]}
Uzyskaj długość tablicy
Pobiera tablicę długości długości łańcucha i uzyskać w ten sam sposób, na przykład:
# 取得数组元素的个数 length=${#array_name[@]} # 或者 length=${#array_name[*]} # 取得数组单个元素的长度 lengthn=${#array_name[n]}
Shell Uwagi
Line z "#" na początku komentarza, będą ignorowane przez interpreter.
sh nie ma żadnych komentarzy obsługujący kilka linii, każda linia może tylko dodać znak #. Tylko w ten sposób:
#-------------------------------------------- # 这是一个注释 # author:本教程 # site:www.w3write.com # slogan:学的不仅是技术,更是梦想! #-------------------------------------------- ##### 用户配置区 开始 ##### # # # 这里可以添加脚本描述信息 # # ##### 用户配置区 结束 #####
Jeśli proces rozwoju, napotykają duże fragmenty kodu, należy tymczasowo wypowiedzieć się po jakimś czasie i komentarzem, jak to zrobić?
Każdy wiersz dodać symbolu # zbyt pracochłonne, można umieścić jakiś kod, aby być opatrzone parą nawiasów klamrowych, zdefiniowana jako funkcja, nie ma miejsca, aby wywołać tę funkcję, ten kod nie zostanie wykonany, i osiągnął jako adnotacje efekt.