English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Shell-Variable

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.

Verwenden Sie Variablen

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.

Schreibgeschützte Variablen

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.

Variable löschen

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.

Variablentyp

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

Shell-Zeichenkette

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.

Singlequote

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.

Anführungszeichen

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

Verknüpfte Zeichenfolgen

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} !

Länge der Zeichenfolge ermitteln

string="abcd"
echo ${#string} # Ausgabe 4

Extrahieren Sie den Teilstring

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.

Zeichenfolge suchen

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 '.

Shell-Array

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.

Definieren Sie ein Array

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.

Lesen Sie das Array

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[@]}

Erhalten Sie die Länge des Arrays

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]}

Shell-Kommentare

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

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...
!