Linux test-Befehl

Linux 命令大全Linux-Befehlsenzyklopädie


testEs ist ein eingebauter Befehl im Linux/Unix-System, der zur bedingten Auswertung verwendet wird und hauptsächlich für verschiedene Tests und Vergleichsoperationen in Shell-Skripten genutzt wird. Er kann Dateiattribute prüfen, Zeichenketten und numerische Werte vergleichen und ist ein unverzichtbares Werkzeug zum Schreiben von Shell-Skripten.


Grundlegende Syntax

test EXPRESSION
# 或者使用方括号格式(更常用)
[ EXPRESSION ]

Hinweis: Bei Verwendung des Klammerformats müssen Leerzeichen zwischen dem Ausdruck und den Klammern stehen, d. h.,[空格EXPRESSION空格]


Hauptfunktionskategorien

1. Dateitests

Prüft verschiedene Attribute von Dateien oder Verzeichnissen:

Ausdruck Bedeutung
-e 文件 Ob die Datei existiert
-f 文件 Ist eine reguläre Datei (weder ein Verzeichnis noch eine Gerätedatei)
-d 文件 Ist ein Verzeichnis
-s 文件 Dateigröße ist nicht leer
-r 文件 Datei ist lesbar
-w 文件 Datei ist beschreibbar
-x 文件 Datei ist ausführbar
-L 文件 Datei ist ein symbolischer Link

Beispiel:

Beispiele

if [ -f "/etc/passwd" ]; then
    echo "Dies ist eine reguläre Datei"
fi

2. Zeichenkettenvergleich

Vergleicht die Beziehung zwischen zwei Zeichenketten:

Ausdruck Bedeutung
-z "字符串" Zeichenkettenlänge ist 0
-n "字符串" Zeichenkettenlänge ist nicht 0
"串1" = "串2" Zeichenketten sind gleich
"串1" != "串2" Zeichenketten sind nicht gleich

Beispiel:

Beispiele

read -p "Benutzername eingeben: " username
if [ -z "$username" ]; then
    echo "Benutzername darf nicht leer sein"
fi

3. Numerischer Vergleich

Vergleicht die Beziehung zwischen zwei Ganzzahlen:

Ausdruck Bedeutung
n1 -eq n2 Equal
n1 -ne n2 Nicht gleich
n1 -gt n2 Größer als
n1 -ge n2 Größer als oder gleich
n1 -lt n2 Kleiner als
n1 -le n2 Kleiner als oder gleich

Beispiel:

Beispiele

if [ $(id -u) -eq 0 ]; dann
    echo "Derzeitiger Root-Benutzer"
fi

4. Logische Operatoren

Kombiniert mehrere Testbedingungen:

Operator Bedeutung Beispiel
! Logisches NICHT [ ! -f file ]
-a Logisches AND [ -f file -a -r file ]
-o Logisches OR [ -d dir -o -f file ]

Moderne empfohlene Syntax(mit&&und||):

Beispiele

[ -f file ] && [ -r file ]  # Datei existiert und ist lesbar
[ -d dir ] || [ -f file ]   # Ist ein Verzeichnis oder eine Datei

Erweiterte Nutzung

1. Auswertung zusammengesetzter Bedingungen

Beispiele

if [ -f "/etc/passwd" -a -r "/etc/passwd" ]; dann
    echo "Datei existiert und ist lesbar"
fi

2. Kombination mit if-Anweisungen

Beispiele

if [ "$1" = "start" ]; then
    echo "Dienst wird gestartet..."
elif [ "$1" = "stop" ]; then
    echo "Dienst wird gestoppt..."
else
    echo "Ungültiger Parameter"
fi

3. Verwendung in der Variablenzuweisung

Beispiele

[ -z "$PATH" ] && PATH="/usr/bin:/bin"  # Standardwert festlegen, falls PATH leer ist

Häufige Fehler und Vorsichtsmaßnahmen

Probleme mit Leerzeichen:

Beispiele

[ "$var" = "value" ]  # Korrekt
[ "$var"="value" ]    # Falsch, fehlendes Leerzeichen

String-Variablen in Anführungszeichen setzen:

Beispiele

[ -n "$var" ]  # Korrekt, verhindert Fehler, wenn die Variable leer ist
[ -n $var ]    # Fehler, wenn $var leer ist

Numerischer Vergleich vs. String-Vergleich:

Beispiele

[ "10" -gt "2" ]  # Korrekt, numerischer Vergleich
[ "10" > "2" ]    # Falsch, dies ist ein String-Vergleich (lexikografisch)

Datei-Testpfad:

Beispiele

[ -f "$file" ]    # Korrekt, Variable in Anführungszeichen gesetzt
[ -f $file ]      # Fehler tritt auf, wenn der Pfad Leerzeichen enthält

Praktische Anwendungsbeispiele

Beispiel 1: Prüfen, ob das Backup-Verzeichnis existiert

Beispiele

backup_dir="/var/backups"
if [ ! -d "$backup_dir" ]; then
    mkdir -p "$backup_dir"
    echo "Backup-Verzeichnis wird erstellt:$backup_dir"
fi

Beispiel 2: Benutzereingabe validieren

Beispiele

read -p "Bitte Alter eingeben: " age
if [ "$age" -lt 0 -o "$age" -gt 120 ]; then
    echo "Ungültige Alterseingabe"
    exit 1
fi

Beispiel 3: Dienststart-Skript

Beispiele

#!/bin/bash

if [ "$1" = "start" ]; then
    if [ -f "/var/run/service.pid" ]; then
        echo "Dienst läuft bereits"
    else
        echo "Dienst wird gestartet..."
        # Startbefehl
    fi
elif [ "$1" = "stop" ]; then
    # Stopp-Logik
else
    echo "Verwendung: $0 {start|stop}"
fi

Zusammenfassung

testDer Befehl ist ein grundlegendes Werkzeug in der Shell-Skript-Programmierung. Wenn Sie ihn beherrschen, können Sie:

  • Bedingte Verzweigungslogik implementieren
  • Datei- und Verzeichnisstatus validieren
  • Zeichenketten und numerische Werte vergleichen
  • Komplexe Auswertungsbedingungen erstellen

Merken Sie sich die wichtigsten Punkte:

  1. Das Klammerformat wird häufiger verwendet, aber achte auf Leerzeichen
  2. Umschließe Variablenreferenzen mit doppelten Anführungszeichen
  3. Unterscheide zwischen Zeichenkettenvergleichs- und numerischen Vergleichsoperatoren
  4. Verwende moderne&&und||um zu ersetzen-aund-o

Linux 命令大全Linux-Befehlsenzyklopädie

Andere Erweiterungen