Test-Kommando: Unterschied zwischen den Versionen
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) = | ||
| − | * [[ | + | |
| + | (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