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, 21: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