Unix / Linux - Shell Basic Operators
Hallo, angehende Programmierer! Ich freue mich, Euch durch die faszinierende Welt der Unix/Linux-Shell-Operatoren zu führen. Als jemand, der seit über einem Jahrzehnt Informatik unterrichtet, kann ich Euch versichern, dass das Beherrschen dieser Operatoren ein echter game-changer auf Eurer Programmierreise sein wird. Tauchen wir ein!
Arithmetische Operatoren
Arithmetische Operatoren sind die Bausteine mathematischer Operationen in Shell-Skripten. Sie erlauben uns, grundlegende Berechnungen innerhalb unserer Skripte durchzuführen.
Hier ist eine Tabelle der häufigsten arithmetischen Operatoren:
Operator | Beschreibung | Beispiel |
---|---|---|
+ | Addition | expr $a + $b |
- | Subtraktion | expr $a - $b |
* | Multiplikation | expr $a \* $b |
/ | Division | expr $a / $b |
% | Modulus | expr $a % $b |
= | Zuweisung | a=$b |
Schauen wir uns ein praktisches Beispiel an:
#!/bin/bash
a=10
b=5
echo "Addition: `expr $a + $b`"
echo "Subtraktion: `expr $a - $b`"
echo "Multiplikation: `expr $a \* $b`"
echo "Division: `expr $a / $b`"
echo "Modulus: `expr $a % $b`"
In diesem Skript verwenden wir den Befehl expr
, um arithmetische Operationen durchzuführen. Die Backticks () werden verwendet, um den
expr`-Befehl auszuführen und dessen Ausgabe zu ersetzen.
Wenn Sie dieses Skript ausführen, werden Sie Folgendes sehen:
Addition: 15
Subtraktion: 5
Multiplikation: 50
Division: 2
Modulus: 0
Denken Sie daran, dass in Shell-Skripten Leerzeichen entscheidend sind. expr$a+$b
funktioniert nicht, aber expr $a + $b
tut es. Es ist, alswould man seinen Variablen Raum zum Atmen geben!
Relationale Operatoren
Relationale Operatoren werden verwendet, um Werte zu vergleichen. Sie sind entscheidend für die Erstellung von Bedingungen in Ihren Skripten.
Hier ist eine Tabelle der relationalen Operatoren:
Operator | Beschreibung | Beispiel |
---|---|---|
-eq | Gleich | [ $a -eq $b ] |
-ne | Ungleich | [ $a -ne $b ] |
-gt | Größer als | [ $a -gt $b ] |
-lt | Kleiner als | [ $a -lt $b ] |
-ge | Größer oder gleich | [ $a -ge $b ] |
-le | Kleiner oder gleich | [ $a -le $b ] |
Sehen wir uns diese in Aktion an:
#!/bin/bash
a=10
b=20
if [ $a -eq $b ]
then
echo "$a ist gleich $b"
elif [ $a -gt $b ]
then
echo "$a ist größer als $b"
else
echo "$a ist kleiner als $b"
fi
Dieses Skript vergleicht a
und b
mit relationalen Operatoren. Wenn Sie es ausführen, werden Sie sehen:
10 ist kleiner als 20
Tipp: Denken Sie diese Operatoren als fragende. "-eq" ist so, als würde man fragen "Sind diese gleich?", "-gt" fragt "Ist dies größer als das?". Es hilft, diese Vergleiche auszusprechen, wenn Sie Ihre Skripte schreiben.
Boolesche Operatoren
Boolesche Operatoren erlauben uns, mehrere Bedingungen zu kombinieren. Sie sind wie die logische Klebstoff Ihrer Skripte.
Hier ist eine Tabelle der booleschen Operatoren:
Operator | Beschreibung | Beispiel |
---|---|---|
! | NICHT | [ ! false ] |
-o | ODER | [ $a -lt 20 -o $b -gt 100 ] |
-a | UND | [ $a -lt 20 -a $b -gt 100 ] |
Schauen wir uns ein Beispiel-Skript an:
#!/bin/bash
a=10
b=20
if [ $a -lt 20 -a $b -gt 15 ]
then
echo "Beide Bedingungen sind wahr"
else
echo "Mindestens eine Bedingung ist falsch"
fi
Wenn Sie dieses Skript ausführen, werden Sie sehen:
Beide Bedingungen sind wahr
Ich mag es, boolesche Operatoren als Entscheidungswerkzeuge zu betrachten. Sie helfen Ihrem Skript, basierend auf mehreren Faktoren Entscheidungen zu treffen, genau wie wir das im echten Leben tun!
String-Operatoren
String-Operatoren werden verwendet, um Textstrings zu vergleichen und zu manipulieren. Sie sind unglaublich nützlich bei der Arbeit mit Textdaten.
Hier ist eine Tabelle der String-Operatoren:
Operator | Beschreibung | Beispiel |
---|---|---|
= | Gleich | [ $a = $b ] |
!= | Ungleich | [ $a != $b ] |
-z | String ist null | [ -z $a ] |
-n | String ist nicht null | [ -n $a ] |
str | String ist nicht leer | [ $a ] |
Sehen wir uns diese in Aktion an:
#!/bin/bash
a="Hello"
b="World"
if [ $a = $b ]
then
echo "Strings sind gleich"
elif [ -z $a ]
then
echo "String a ist leer"
elif [ -n $b ]
then
echo "String b ist nicht leer"
else
echo "Keine der obigen Bedingungen ist wahr"
fi
Wenn Sie dieses Skript ausführen, werden Sie Folgendes sehen:
String b ist nicht leer
String-Operatoren sind wie die Grammatikregeln von Shell-Skripten. Sie helfen Ihnen, Sinn in den Text zu bringen, mit dem Ihr Skript arbeitet.
Datei-Test-Operatoren
Datei-Test-Operatoren werden verwendet, um verschiedene Dateibedingungen zu testen. Sie sind entscheidend, wenn Ihr Skript mit Dateien und Verzeichnissen interagieren muss.
Hier ist eine Tabelle einiger gängiger Datei-Test-Operatoren:
Operator | Beschreibung | Beispiel |
---|---|---|
-d file | Verzeichnis exists | [ -d $file ] |
-f file | Datei exists und ist eine reguläre Datei | [ -f $file ] |
-r file | Datei ist lesbar | [ -r $file ] |
-w file | Datei ist schreibbar | [ -w $file ] |
-x file | Datei ist ausführbar | [ -x $file ] |
-s file | Datei ist nicht null | [ -s $file ] |
Schauen wir uns ein Beispiel-Skript an:
#!/bin/bash
file="/etc/passwd"
if [ -f $file ]
then
echo "Datei exists"
if [ -r $file ]
then
echo "Datei ist lesbar"
fi
if [ -w $file ]
then
echo "Datei ist schreibbar"
fi
if [ -x $file ]
then
echo "Datei ist ausführbar"
fi
else
echo "Datei exists nicht"
fi
Wenn Sie dieses Skript ausführen, könnten Sie Folgendes sehen:
Datei exists
Datei ist lesbar
Datei-Test-Operatoren sind wie die Detektivwerkzeuge Ihres Skripts. Sie helfen Ihrem Skript zu verstehen, was es mit verschiedenen Dateien und Verzeichnissen kann und kann nicht.
C Shell Operatoren
Die C Shell (csh) hat ihre eigenen Operatoren, die sich etwas von den Bourne Shell-Operatoren unterscheiden. Hier sind einige Beispiele:
#!/bin/csh
set a = 10
set b = 20
if ($a == $b) then
echo "a ist gleich b"
else if ($a != $b) then
echo "a ist ungleich b"
endif
if ($a > $b) then
echo "a ist größer als b"
else if ($a < $b) then
echo "a ist kleiner als b"
endif
In der C Shell verwenden wir ==
für Gleichheit und !=
für Ungleichheit. Wir können auch direkt >
und <
für Vergleiche verwenden.
Korn Shell Operatoren
Die Korn Shell (ksh) kombiniert Merkmale von sowohl der Bourne Shell als auch der C Shell. Hier ist ein Beispiel:
#!/bin/ksh
a=10
b=20
if ((a == b))
then
print "a ist gleich b"
elif ((a != b))
then
print "a ist ungleich b"
fi
if ((a > b))
then
print "a ist größer als b"
elif ((a < b))
then
print "a ist kleiner als b"
fi
In der Korn Shell können wir ((
und ))
für arithmetische Operationen und Vergleiche verwenden, was die Syntax sauberer und intuitiver macht.
Denken Sie daran, Übung macht den Meister! Seid nicht afraid, diese Operatoren in Euren eigenen Skripten auszuprobieren. Jedes Mal, wenn Ihr sie verwendet, werdet Ihr confortabler und versierter. Viel Spaß beim Skripten!
Credits: Image by storyset