Test-Kommando

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Der eingebaute Befehl test gibt sein Ergebnis als Returncode zurück. Dieser Befehl wird daher oft in Kontrollstrukturen der bash zur Verzweigung verwendet.

Es existieren 2 Schreibweisen:

test bedingung
[ bedingung ]

Ist das von bedingung zurückgelieferte Ergebnis wahr, wird der Returncode 0 übergeben, sonst ungleich 0. bedingung kann ein numerischer Vergleich, ein Stringvergleich, eine Prüfung von Objekteigenschaften oder eine beliebige Kombination der vorhergehenden sein.

Numerischer Vergleich

test zahl1 -op zahl2			(op: eq, ne, lt, gt, ge, le)
  • ZAHL=4
  • test $ZAHL -eq "4" && echo stimmt


-eq gleich
-ne ungleich
-lt kleiner
-gt größer
-ge größer oder gleich
-le kleiner oder gleich

Stringvergleich

test string1 = string2
test string1 != string2
test –n string   oder  test string		(Länge von string größer null)
test –z string	 				(Länge von string gleich null)
  • HOBBIT=frodo
  • test $HOBBIT = "bilbo" && echo frodo
  • test $HOBBIT = "bilbo" && echo bilbo
  • HOBBIT=bilbo
  • test $HOBBIT = "bilbo" && echo bilbo
bilbo

Objekteigenschaften

test -op objekt 	    	
d Directory
f Datei
s nicht leere Datei
r leserecht auf das Objekt
w schreibrecht auf das Objekt
x ausführungsrecht auf das Objekt
  • test -f /etc/shadow && echo sicheres system
sicheres system
  • test -r /etc/shadow || echo so ist es richtig
so ist es richtig

Prioritäten bei logischen Verknüpfungen

runde Klammer Negation AND OR
() ! -a -o


	test \( -r dat -o -w dat \)
	test ! \( -r dat -o -w dat \)
	test $name;echo $?
  • ! test -r /etc/shadow && echo so ist es richtig
so ist es richtig

Alternative Schreibweise

  • test kann auch mit eckigen Klammern aufgerufen werden
  • [ 2 -eq 2 ] ist äquivalent zu test 1 -eq 1

Aufgaben

Grundlegendes

  • Was macht das test-Kommando?
  • Welche Schreibweisen gibt es?

Numerischer Vergleich

  • Welche Numerischen Vergleichsoperanden gibt es?
  • Schreiben sie ein Skript das Ausgabe gibt ob 2 zahlen gleich sind oder nicht?

String-Vergleich

  • Welche String Vergleichsoperanden gibt es?
  • Schreiben sie ein Skript das Ausgabe gibt ob 2 Strings gleich sind oder nicht?

Objekt-Eigenschaften

  • Welche test-operanden kann man auf eine Datei anwenden
  • Schreiben sie ein Skript das Ausgabe gibt ob eine Datei ein Verzeichnis

Aufgabe 4(benötigt das Test-Kommando)

(geht nur als root)

  • Schreiben Sie einen 1-Zeiler, der das IPv4-Routing auf der Maschine ein-/ausschaltet:
    • sysctl net.ipv4.ip_forward=1
    • sysctl net.ipv4.ip_forward=0
  • Falls es gerade an ist, soll es ausgeschaltet werden
  • Falls es gerade aus ist, soll es angeschaltet werden