Test-Kommando: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 92: Zeile 92:
  
 
= Aufgaben =
 
= 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) =
  
* [[Aufgaben Bash 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
 +
 
 +
<!-- * '''[ $(cat /proc/sys/net/ipv4/ip_forward) -gt 0 ] && sysctl net.ipv4.ip_forward=0 || sysctl net.ipv4.ip_forward=1''' -->
 +
 
 +
 
 +
<!--
 +
= Pausen Erinnerungen =
 +
 
 +
* Schreiben Sie ein Skript welches jede Minute überprüft, ob [[Zeiten|Zeit für eine Pause]] ist
 +
* Das Skript soll bis 16 Uhr funktionieren; danach soll es sich beenden und ''"Feierabend!"'' melden
 +
* ''Tipp'': mit '''notify-send''' kann man Desktop Notifikationen senden
 +
-->
 +
<!-- <syntaxhighlight lang=bash> -->
 +
<!-- #!/bin/bash -->
 +
<!--  -->
 +
<!-- h=$(date +%H) -->
 +
<!-- m=$(date +%M) -->
 +
<!--  -->
 +
<!-- while [ $h -lt 16 ]; do -->
 +
<!-- [ $h -eq 8 ] && [ $m -eq 0 ] && notify-send "Beginn!" -->
 +
<!-- [ $h -eq 9 ] && [ $m -eq 20 ] && notify-send "NATO Pause" -->
 +
<!-- [ $h -eq 9 ] && [ $m -eq 50 ] && notify-send "Kaffeepause" -->
 +
<!-- [ $h -eq 12 ] && [ $m -eq 30 ] && notify-send "Mittagspause" -->
 +
<!-- [ $h -eq 14 ] && [ $m -eq 50 ] && notify-send "Kaffeepause" -->
 +
<!-- sleep 1m -->
 +
<!-- done -->
 +
<!--  -->
 +
<!-- notify-send "Feierabend!" -->
 +
<!-- </syntaxhighlight> -->

Version vom 12. Oktober 2025, 19:51 Uhr

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