Latest web development tutorials

Shell? Zmienny

Zmienne powłoki

Po zdefiniowaniu zmiennej, nazwy zmiennej bez znaku dolara ($, zmienne języka PHP jest to konieczne), takich jak:

your_name="w3big.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="http://www.w3cschool.cc"
readonly myUrl
myUrl="http://www.w3big.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.w3big.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 ... 值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.w3big.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.