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!

Unix / Linux - Basic Operators

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 denexpr`-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