Heim > System-Tutorial > LINUX > Hauptteil

So unterscheiden Sie zwischen $() und ${} und $(()) und (()) in der Bash-Shell

王林
Freigeben: 2024-02-15 10:40:25
nach vorne
931 Leute haben es durchsucht

bash shell 中如何区别 $()和${}和$(())和(())

Verwendung von $() und ${}:

In der Bash-Shell werden $( ) und ` ` (Backticks) zur Befehlsersetzung verwendet. Und $() kann in jeder Shell verwendet werden. Wenn Sie bash2 verwenden, ist das kein Problem...

Sehen Sie sich ${ } an ... es wird tatsächlich zur Variablensubstitution verwendet. Im Allgemeinen gibt es keinen Unterschied zwischen $var und ${var}. Durch die Verwendung von ${ } wird der Umfang von Variablennamen jedoch genauer definiert.

Hier werde ich einige Beispiele verwenden, um einige der Sonderfunktionen von ${ }:

zu veranschaulichen

Angenommen, wir definieren eine Variable als:

file=/dir1/dir2/dir3/my.file.txt

Wir können ${ } verwenden, um verschiedene Werte zu erhalten:

${file#*/}: Entfernen Sie das erste / und die Zeichenfolge links: dir1/dir2/dir3/my.file.txt

${file##*/}: Entfernen Sie das letzte / und die Zeichenfolge links: my.file.txt

${file#*.}: Entfernen Sie die erste und die Zeichenfolge links davon: file.txt

${file##*.}: Entfernen Sie die letzte . und die Zeichenfolge links: txt

${file%/*}: Entfernen Sie das letzte / und die Zeichenfolge rechts: /dir1/dir2/dir3

${file%%/*}: Entfernen Sie das erste / und die Zeichenfolge rechts: (Nullwert)

${file%.*}: Entfernen Sie die letzte . und die Zeichenfolge rechts: /dir1/dir2/dir3/my.file

${file%%.*}: Entfernen Sie die erste und die Zeichenfolge rechts: /dir1/dir2/dir3/my

Die Gedächtnismethode ist:

# bedeutet, die linke Seite zu entfernen (# befindet sich links von $ auf dem Bewertungsschild)

% bedeutet, dass die rechte Seite entfernt wird (% befindet sich auf der rechten Seite von $ auf der Tafel)

Ein einzelnes Symbol ist die minimale Übereinstimmung; zwei Symbole sind die maximale Übereinstimmung.

${file:0:5}: Extrahieren Sie die 5 Bytes ganz links: /dir1

${file:5:5}: Extrahieren Sie 5 aufeinanderfolgende Bytes rechts vom 5. Byte: /dir2

Wir können auch die Zeichenfolge im Variablenwert ersetzen:

${file/dir/path}: Ersetzen Sie das erste Verzeichnis durch path:/

Pfad1/Verzeichnis2/Verzeichnis3/meine.Datei.txt

${file//dir/path}: Ersetzen Sie alle Verzeichnisse durch path:/

Pfad1/Pfad2/Pfad3/meine.Datei.txt

Verwenden Sie ${ }, um verschiedenen Variablenzuständen Werte zuzuweisen (nicht gesetzt, Nullwert, Nicht-Nullwert):

${file-my.file.txt}: Wenn $file nicht gesetzt ist, wird my.file.txt als Rückgabewert verwendet. (Null- und Nicht-Null-Werte werden nicht verarbeitet)

${file:-my.file.txt}: Wenn $file nicht festgelegt oder leer ist, verwenden Sie my.file.txt als Rückgabewert. (Werte ungleich Null werden nicht verarbeitet)

${file+my.file.txt}: Wenn $file auf einen Nullwert oder einen Nicht-Null-Wert gesetzt ist, wird my.file.txt als Rückgabewert verwendet. (Wenn nicht festgelegt, wird keine Verarbeitung durchgeführt)

${file:+my.file.txt}: Wenn $file ein nicht leerer Wert ist, verwenden Sie my.file.txt als Rückgabewert. (Es wird keine Verarbeitung durchgeführt, wenn keine Einstellung oder kein leerer Wert vorhanden ist)

${file=my.file.txt}: Wenn $file nicht festgelegt ist, verwenden Sie my.file.txt als Rückgabewert und weisen Sie $file my.file.txt zu. (Null- und Nicht-Null-Werte werden nicht verarbeitet)

${file:=my.file.txt}: Wenn $file nicht festgelegt oder leer ist, verwenden Sie my.file.txt als Rückgabewert und weisen Sie $file my.file.txt zu. (Werte ungleich Null werden nicht verarbeitet)

${file?my.file.txt}: Wenn $file nicht festgelegt ist, geben Sie my.file.txt an STDERR aus. (Null- und Nicht-Null-Werte werden nicht verarbeitet)

${file:?my.file.txt}: Wenn $file nicht festgelegt oder leer ist, geben Sie my.file.txt an STDERR aus. (Werte ungleich Null werden nicht verarbeitet)

Das obige Verständnis besagt, dass Sie die drei Zuweisungszustände „nicht gesetzt“, „null“ und „nicht null“ klar unterscheiden müssen.

Im Allgemeinen hängt : mit null zusammen. Wenn es : enthält, ist null davon nicht betroffen.

Außerdem kann ${#var} die Länge des Variablenwerts berechnen:

${#file} erhält 27, weil /dir1/dir2/dir3/my.file.txt genau 27 Bytes ist...

$(()) Zweck:

Es wird für Ganzzahloperationen verwendet.

In Bash lauten die ganzzahligen arithmetischen Symbole von $(( )) ungefähr wie folgt:

+ - * /: jeweils „Addition, Subtraktion, Multiplikation, Division“.

%: Restbetrieb

& |. ^ !: „AND, OR, XOR, NOT“-Operationen.

Beispiel:

wangnc>a=5;b=7;c=2;

wangnc>echo $a + $b

5 + 7

wangnc>echo $(( a + b*c))

19

wangnc>echo $(((a*b)/c))

17

wangnc>echo $(($a +$b*$c))

19

wangnc>

Der Variablenname in $(( )) kann durch das Hinzufügen eines $-Symbols davor ersetzt werden, oder er kann ohne dieses ersetzt werden, wie zum Beispiel:

$(( $a + $b * $c)) kann auch das Ergebnis von 19 erhalten

Darüber hinaus kann $(( )) auch Operationen mit unterschiedlichen Übertragszahlen (z. B. binär, oktal und hexadezimal) ausführen, die Ausgabeergebnisse sind jedoch alle dezimal:

echo $((16#2a)) Das Ergebnis ist 42 (Hexadezimal zu Dezimal)

(()) Zweck:

Tatsächlich kann die einfache Verwendung von (( )) auch Variablenwerte neu definieren oder Tests durchführen:

a=5; ((a++)) definiert $a zu 6

a=5; ((a--)) dann a=4

a=5; b=7; ((a < b)) gibt 0 (wahr) zurück.

Übliche Testsymbole für (( )) sind wie folgt:

<: kleiner als >: größer als

<=: kleiner oder gleich >=: größer oder gleich

==: gleich

!=: Ungleich

Das obige ist der detaillierte Inhalt vonSo unterscheiden Sie zwischen $() und ${} und $(()) und (()) in der Bash-Shell. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:linuxprobe.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!