GNU/Linux >> LINUX-Kenntnisse >  >> Linux

6 Beispiele für bedingte Bash-Ausdrücke ( -e, -eq, -z, !=, [, [[ ..)

Bash-Ausdruck ist die Kombination von Operatoren, Features oder Werten, die verwendet werden, um eine bedingte Bash-Anweisung zu bilden. Bedingter Ausdruck kann ein binärer oder unärer Ausdruck sein, der numerische, Zeichenfolgen oder beliebige Befehle enthält, deren Rückgabestatus bei Erfolg Null ist.


Es gibt mehrere Bedingungsausdrücke, die zum Testen mit den Dateien verwendet werden könnten. Im Folgenden finden Sie einige hilfreiche Bedingungsausdrücke.

  • [ -e Dateipfad ] Gibt wahr zurück, wenn die Datei existiert.
  • [ -x Dateipfad ] Gibt wahr zurück, wenn die Datei existiert und ausführbar ist.
  • [ -S Dateipfad ] Gibt wahr zurück, wenn die Datei existiert und es sich um eine Socket-Datei handelt.
  • [ expr1 -a expr2 ] Gibt wahr zurück, wenn beide Ausdrücke wahr sind.
  • [ expr1 -o expr2 ] Gibt wahr zurück, wenn einer der Ausdrücke 1 oder 2 wahr ist.

Weitere bedingte Ausdrücke zum Überprüfen der Dateien, Zeichenfolgen und Zahlen finden Sie auf der Bash-Manpage.

Bash-Beispiel 1. Dateiexistenz prüfen

Das folgende Bash-Shell-Skript-Code-Snippet ruft den Dateinamen mit seinem absoluten Pfad ab und prüft, ob die Datei existiert oder nicht und gibt die entsprechenden Informationen aus.

$ cat exist.sh
#! /bin/bash
file=$1
if [ -e $file ]
then
	echo -e "File $file exists"
else
	echo -e "File $file doesnt exists"
fi

$ ./exist.sh /usr/bin/boot.ini
File /usr/bin/boot.ini exists

Lesen Sie unseren vorherigen Artikel, um die verschiedenen Arten von Bash-if-Anweisungen zu verstehen.

Bash-Beispiel 2. Zahlen vergleichen

Das folgende Skript liest zwei Integer-Zahlen vom Benutzer und prüft, ob beide Zahlen gleich oder größer oder kleiner sind.

$ cat numbers.sh
#!/bin/bash
echo "Please enter first number"
read first
echo "Please enter second number"
read second

if [ $first -eq 0 ] && [ $second -eq 0 ]
then
	echo "Num1 and Num2 are zero"
elif [ $first -eq $second ]
then
	echo "Both Values are equal"
elif [ $first -gt $second ]
then
	echo "$first is greater than $second"
else
	echo "$first is lesser than $second"
fi

$ ./numbers.sh
Please enter first number
1
Please enter second number
1
Both Values are equal

$ ./numbers.sh
Please enter first number
3
Please enter second number
12
3 is lesser than 12

Wenn Sie mit Bash-Skripting noch nicht vertraut sind, lesen Sie unser Bash-Einführungstutorial.

Bash-Beispiel 3. Grundlegender arithmetischer Rechner

Dieses Beispiel liest eine Eingabe, die eine Art arithmetische Operation ist, die für Bash-Variablen (inp1 und inp2) ausgeführt werden soll. Die arithmetische Operation kann Addition, Subtraktion oder Multiplikation sein..

$ cat calculator.sh
#!/bin/bash
inp1=12
inp2=11
echo "1. Addition"
echo "2. Subtraction"
echo "3. Multiplication"
echo -n "Please choose a word [1,2 or 3]? "
read oper

if [ $oper -eq 1 ]
then
	echo "Addition Result " $(($inp1 + $inp2))
else
	if [ $oper -eq 2 ]
	then
		echo "Subtraction Result " $(($inp1 - $inp2))
	else
		if [ $oper -eq 3 ]
		then
			echo "Multiplication Result " $(($inp1 * $inp2))
		else
			echo "Invalid input"
		fi
	fi
fi

$ ./calculator.sh
1. Addition
2. Subtraction
3. Multiplication
Please choose a word [1,2 or 3]? 4
Invalid input

Zu wissen, wie man die Bash-Spezialparameter ( $*, $@, $#, $$, $!, $?, $-, $_ ) verwendet, wird Ihnen das Scripting-Leben erleichtern.

Bash-Beispiel 4. IP-Adresse lesen und pingen

Das folgende Skript wird verwendet, um die IP-Adresse zu lesen und zu prüfen, ob die IP-Adresse erreichbar ist, und die entsprechende Meldung auszugeben.

$ cat ipaddr.sh
#!/bin/bash
echo "Enter the Ipaddress"
read ip

if [ ! -z $ip ]
then
	ping -c 1 $ip
	if [ $? -eq 0 ] ; then
		echo "Machine is giving ping response"
	else
		echo "Machine is not pinging"
	fi
else
	echo "IP Address is empty"
fi

$ ./ipaddr.sh
Enter the Ipaddress
10.176.191.106

Pinging 10.176.191.106 with 32 bytes of data:

Reply from 10.176.191.106: bytes=32 time<1ms TTL=128

Ping statistics for 10.176.191.106:
    Packets: Sent = 1, Received = 1, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms
Machine is giving ping response

In diesem Beispiel gibt -z true zurück, wenn die IP-Adresse eine Länge von null hat. Wenn der Bedingung ein ! (negieren) Operator, wenn der Ausdruck falsch ist, tritt er in den if-Teil ein und wird ausgeführt. Wenn also die IP-Adresse nicht null ist, wird sie eingegeben und überprüft, ob die IP-Adresse erreichbar ist.

Bash-Beispiel 5. Installationsskript

Das Installationsskript der meisten Pakete erlaubt es nicht, diese als Root-Benutzer auszuführen. Das Skript überprüft den ausführenden Benutzer und gibt den Fehler aus.

Mit dem folgenden Skript können Sie das Oracle-Installationsskript nur ausführen, wenn der Benutzer, der es ausführt, kein Root ist.

$ cat preinstaller.sh
#!/bin/bash
if [ `whoami` != 'root' ]; then
	echo "Executing the installer script"
	./home/oracle/databases/runInstaller.sh
else
	echo "Root is not allowed to execute the installer script"
fi

Executing the script as a root user,
# ./preinstaller.sh
Root is not allowed to execute the installer script

In diesem Beispiel wird die Ausgabe des Befehls whoami mit dem Wort „root“ verglichen. Für Zeichenkettenvergleich ==, !=, < und sollten verwendet werden und für den numerischen Vergleich sollten eq, ne,lt und gt verwendet werden.

Bash-Beispiel 6. Erweiterte Klammern

In allen obigen Beispielen haben wir nur einfache Klammern verwendet, um den bedingten Ausdruck einzuschließen, aber Bash erlaubt doppelte Klammern, die als erweiterte Version der Syntax mit einzelnen Klammern dienen.

$ cat enhanced.sh
#!/bin/bash
echo "Enter the string"
read str
if [[ $str == *condition* ]]
then
	echo "String "$str has the word \"condition\"
fi

$ ./enhanced.sh
Enter the string
conditionalstatement
String conditionalstatement has the word "condition"
  • [ ist ein Synonym für Testbefehl. Selbst wenn es in die Shell integriert ist, erstellt es einen neuen Prozess.
  • [[ ist eine neue verbesserte Version davon, die ein Schlüsselwort ist, kein Programm.
  • [[ wird von Korn und Bash verstanden.
  • Wenn im obigen Beispiel die Variable $str irgendwo den Ausdruck „Bedingung“ enthält, ist die Bedingung wahr.
  • Dies ist die Globbing-Funktion der Shell, die nur unterstützt wird, wenn Sie [[ (doppelte Klammern) verwenden und daher viele Argumente nicht in Anführungszeichen setzen müssen.

Linux
  1. Bash-Arrays mit Beispielen

  2. Bash-If-Else-Anweisung mit Beispielen

  3. Beispiele für Bash-For- und While-Schleifen

  4. 5 Beispiele für Bash-Case-Anweisungen

  5. Bash für Schleifenbeispiele

Bash For Loop mit praktischen Beispielen

35 Bash-Skriptbeispiele

Bash Echo-Befehl mit Beispielen in Linux erklärt

Bash-Umleitung mit Beispielen erklärt

Bash-Skripting – Bedingte Anweisungen

Bash If Else Syntax mit Beispielen