English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Beim Definieren von Variablen wird kein Dollarzeichen ($, wie in der PHP-Sprache erforderlich) vor dem Variablennamen verwendet, z.B.:
your_name="w"3codebox.com"
Beachten Sie, dass es zwischen Variablenname und Gleichzeichen kein Leerzeichen geben darf, das ist anders als in allen anderen Programmiersprachen, die Sie vielleicht kennen. Gleichzeitig müssen die Namen der Variablen den folgenden Regeln folgen:
Der Name kann nur aus lateinischen Buchstaben, Ziffern und Unterstrichen bestehen, und der erste Buchstabe darf nicht mit einer Ziffer beginnen.
Zwischenräume dürfen nicht vorhanden sein, aber Unterstriche (_) können verwendet werden.
Punktsymbole dürfen nicht verwendet werden.
Bash-Schlüsselwörter dürfen nicht verwendet werden (Sie können die help-Anweisung verwenden, um die reservierten Schlüsselwörter anzuzeigen).
Beispiele für gültige Shell-Variablennamen sind wie folgt:
w3codebox LD_LIBRARY_PATH _var var2
Ungültiger Variablenname:
?var=123 user*name=w3codebox
Außer der expliziten direkten Zuweisung kann auch eine Anweisung verwendet werden, um Variablen zu zuweisen, z.B.:
for file in `ls /etc` oder for file in $(ls /etc)
Die obigen Anweisungen werden /Schleifen durch die Dateinamen im Verzeichnis unter etc.
Um eine definierte Variable zu verwenden, fügen Sie nur ein Dollarzeichen vor den Variablennamen hinzu, z.B.:
your_name="qinjx" echo $your_name echo ${your_name}
Klammern außerhalb des Variablennamens sind optional, Sie können sie hinzufügen oder nicht, Klammern werden hinzugefügt, um dem Interpreter zu helfen, die Grenzen der Variablen zu erkennen, z.B. in folgendem Fall:
for skill in Ada Coffee Action Java; do echo "I am good at ${skill}Script" done
Wenn Sie der Variable skill keine Klammern hinzufügen, und sie so schreiben echo "I am good at $skillScript", wird der Interpreter $skillScript als Variable (deren Wert leer ist) interpretieren, und das Ausführungsresultat des Codes wird nicht dem entsprechen, was wir erwarten.
Es wird empfohlen, dass alle Variablen mit Klammern versehen werden, das ist eine gute Programmierpraxis.
Definierte Variablen können neu definiert werden, z.B.:
your_name="tom" echo $your_name your_name="alibaba" echo $your_name
So ist das korrekt, aber beachten Sie, dass Sie bei der zweiten Zuweisung nicht $your_name="alibaba" schreiben können, sondern nur, wenn Sie Variablen verwenden, dann wird das Dollarzeichen ($) hinzugefügt.
Mit dem readonly-Befehl kann eine Variable als schreibgeschützte Variable definiert werden, der Wert einer schreibgeschützten Variable kann nicht geändert werden.
Der folgende Beispielversuch, eine schreibgeschützte Variable zu ändern, führt zu einem Fehler:
#!/bin/bash myUrl="https://www.google.com" readonly myUrl myUrl="https://de.oldtoolbag.com"
Das Ausführen des Skripts führt zu folgendem Ergebnis:
/bin/sh: NAME: Diese Variable ist schreibgeschützt.
Mit dem unset-Befehl können Variablen gelöscht werden. Syntax:
unset variable_name
Nach dem Löschen einer Variable kann diese nicht erneut verwendet werden. Der Befehl unset kann keine schreibgeschützten Variablen löschen.
Beispiel
#!/bin/sh myUrl="https://de.oldtoolbag.com" unset myUrl echo $myUrl
Die Ausführung des obigen Beispiels führt zu keiner Ausgabe.
Wenn Shell ausgeführt wird, existieren gleichzeitig drei Arten von Variablen:
1) Lokale VariablenLokale Variablen werden in Skripten oder Befehlen definiert und sind nur im aktuellen Shell-Verlauf gültig, andere von Shell gestartete Programme können auf lokale Variablen nicht zugreifen.
2) UmgebungsvariablenAlle Programme, einschließlich von Shell gestarteter Programme, können Umgebungsvariablen zugreifen, einige Programme benötigen Umgebungsvariablen, um ihren normalen Betrieb sicherzustellen. Wenn nötig, kann auch eine Shell-Skript Umgebungsvariablen definieren.
3) Shell-VariablenShell-Variablen sind besondere Variablen, die von Shell-Programmen gesetzt werden. Ein Teil der Shell-Variablen sind Umgebungsvariablen und ein Teil sind lokale Variablen, die den normalen Betrieb von Shell sicherstellen
Zeichenketten sind in Shell-Programmierung die häufigsten und nützlichsten Datenarten (außer Zahlen und Zeichenketten, gibt es auch nicht viel anderes, das man verwenden kann), Zeichenketten können mit Anführungszeichen, auch mit Singlequotes oder ohne Anführungszeichen angegeben werden.
str='this is a string'
Beschränkungen von Singlequote-Zeichenketten:
Alle Zeichen in Anführungszeichen werden wörtlich ausgegeben, Variablen in Singlequote-Zeichenketten sind ungültig;
In Singlequote-Zeichenketten darf ein einzelnes Anführungszeichen nicht vorkommen (nicht einmal, wenn es mit einem Escape-Zeichen verwendet wird), aber sie können paarweise auftreten und als Zeichenkettenverknüpfung verwendet werden.
your_name='w3codebox' str="Hallo, ich weiß, dass du "\"$your_name\"! \n" echo -e $str
Die Ausgabe ist:
Hallo, ich weiß, dass du "w3codebox"!
Vorteile von Anführungszeichen:
In Anführungszeichen können Variablen vorkommen
In Anführungszeichen können Escape-Zeichen vorkommen
your_name="w"3codebox # Verwenden Sie doppelte Anführungszeichen zum Verbinden greeting="hello, "${your_name}" !" greeting_1="hello, ${your_name} !" echo $greeting $greeting_1 # Verwenden Sie einfache Anführungszeichen zum Verbinden greeting_2='hello, '${your_name}' !' greeting_3='hello, ${your_name} !' echo $greeting_2 $greeting_3
Die Ausgabe ist:
hello, w3codebox ! hello, w !3codebox ! hello, w3codebox ! hello, ${your_name} !
string="abcd" echo ${#string} # Ausgabe 4
Das folgende Beispiel extrahiert den Teilstring ab der Zeichenposition 2 Zeichen beginnen, um abzuschneiden 4 Zeichen:
string="w3codebox ist eine großartige Seite" echo ${string}:1:4} # Ausgabe unoo
Hinweis:Erster Zeichenindex 0.
Zeichen suchen i oder o der Position (welches Alphabet zuerst auftaucht, wird berechnet):
string="w3codebox ist eine großartige Seite" echo `expr index "$string" io` # Ausgabe 4
Hinweis: In dem obigen Skript ist ` ein Backslash, nicht ein einfaches Anführungszeichen '.
bash unterstützt eindimensionale Arrays (nicht mehrdimensionale Arrays) und begrenzt die Größe der Arrays nicht.
Ähnlich wie in C beginnen die Indizes der Arrayelemente mit 0. Um ein Element eines Arrays abzurufen, muss der Index verwendet werden, der ein Integer oder ein arithmetisches Ausdruck sein muss und einen Wert größer oder gleich 0 haben sollte.
In Shell wird ein Array durch Klammern dargestellt, und die Arrayelemente werden durch "Leerzeichen" getrennt. Das allgemeine Format zur Definition eines Arrays ist:
数组名=(Wert1 Wert2 ... Wert n)
Beispiel:
array_name=(value0 value1 value2 value3)
oder
array_name=( value0 value1 value2 value3 )
Man kann auch einzeln die Komponenten des Arrays definieren:
array_name[0]=value0 array_name[1=value1 array_name[n]=valuen
Es ist nicht erforderlich, eine zusammenhängende Zeigerreihe zu verwenden, und der Bereich der Zeiger ist nicht begrenzt.
Das allgemeine Format zum Lesen von Arrayelementwerten ist:
${数组名[下标]}
Beispiel:
valuen=${array_name[n]}
Mit dem @-Symbol können Sie alle Elemente des Arrays erhalten, z.B.:}}
echo ${array_name[@]}
Die Methode zum Erhalten der Länge eines Arrays ist ähnlich wie die Methode zum Erhalten der Länge eines Strings, z.B.:
# Erhalten Sie die Anzahl der Elemente des Arrays length=${#array_name[@]} # Oder length=${#array_name[*]} # Erhalten Sie die Länge eines einzelnen Elements des Arrays lengthn=${#array_name[n]}
Zeilen, die mit # beginnen, sind Kommentare und werden vom Interpreter ignoriert.
Durch das Hinzufügen eines # Um mehrzeilige Kommentare zu setzen, sieht so aus:
#-------------------------------------------- # Dies ist ein Kommentar # author: Grundlegende Anleitung Website # site: de.oldtoolbag.com # slogan: Gute Grundlagen sind der Schlüssel, um weiterzukommen! #-------------------------------------------- ##### Benutzerkonfigurationsbereich beginnt ##### # # # Hier können Sie Skriptbeschreibungen hinzufügen # # ##### Benutzerkonfigurationsbereich endet #####
Wenn man während der Entwicklung große Codeabschnitte temporär kommentieren muss und sie später wieder aktivieren muss, was dann?
Es ist zu mühsam, jede Zeile mit einem #-Zeichen zu markieren, daher kann man diesen Abschnitt der zu kommentierenden Codes in eckige Klammern setzen, um ihn zu einem Funktion zu definieren, die nirgendwo aufgerufen wird, und das Stück Code wird nicht ausgeführt, was den gleichen Effekt wie ein Kommentar hat.
Mehrzeilige Kommentare können auch in folgender Form verwendet werden:
:<<EOF Kommentare... Kommentare... Kommentare... EOF
EOF kann auch andere Symbole verwenden:
:<<' Kommentare... Kommentare... Kommentare... ' :<<! Kommentare... Kommentare... Kommentare... !