Bash Der case-Block: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
(Die Seite wurde neu angelegt: „Der case-Block dient der Durchführung eines Stringvergleiches. Er wird sequentiell von oben nach unten abgearbeitet. Bei Übereinstimmungen mit einem definie…“)
 
 
(5 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
Der case-Block dient der Durchführung eines Stringvergleiches. Er wird sequentiell von oben nach unten abgearbeitet. Bei  
+
==Was ist das?==
Übereinstimmungen mit einem definierten Muster wird der darauf folgende Befehl ausgeführt (bzw. die darauf folgende  
+
*Der case-Block dient der Durchführung eines Stringvergleiches.  
Befehlsliste). Bei der ersten gefundenen Übereinstimmung terminiert der case-Block.  
+
*Er wird sequentiell von oben nach unten abgearbeitet.  
 
+
*Bei Übereinstimmungen mit einem definierten Muster wird der darauf folgende Befehl ausgeführt (bzw. die darauf folgende Befehlsliste).  
Bei der Definition des Musters können die Sonderzeichen der bash zur Dateinamengenerierung verwendet werden. Zusätzlich  
+
*Bei der ersten gefundenen Übereinstimmung terminiert der case-Block.  
kann ''|'' für eine logische OR-Verknüpfung benutzt werden.
+
*Bei der Definition des Musters können die Sonderzeichen der bash zur Dateinamengenerierung verwendet werden.
 
+
*Zusätzlich kann ''|'' für eine logische OR-Verknüpfung benutzt werden.
 +
==Beispiel==
 
*cat case1
 
*cat case1
 
<syntaxhighlight>
 
<syntaxhighlight>
Zeile 34: Zeile 35:
 
*./case1 kllkjl
 
*./case1 kllkjl
 
  kein bock auf musik
 
  kein bock auf musik
 +
 +
=Start Script=
 +
<syntaxhighlight lang=bash>
 +
#!/bin/bash
 +
case $1 in
 +
start)
 +
echo start iperf
 +
iperf -s -D > /tmp/iperf.log
 +
;;
 +
stop)
 +
echo stop iperf
 +
pkill -x iperf
 +
;;
 +
status)
 +
echo status iperf
 +
if pgrep -x iperf > /dev/null
 +
  then
 +
    P=$(ss  -lntp | grep iperf | tr -s " " | cut -f 4 -d " " | cut -d : -f 2)
 +
    echo iperf is running on Port: $P
 +
  else
 +
    echo iperf stopped
 +
fi
 +
;;
 +
restart)
 +
$0 stop && $0 start
 +
;;
 +
esac
 +
</syntaxhighlight>
 +
= Aufgaben =
 +
*[[Aufgaben Bash case]]

Aktuelle Version vom 1. Juni 2023, 19:30 Uhr

Was ist das?

  • Der case-Block dient der Durchführung eines Stringvergleiches.
  • Er wird sequentiell von oben nach unten abgearbeitet.
  • Bei Übereinstimmungen mit einem definierten Muster wird der darauf folgende Befehl ausgeführt (bzw. die darauf folgende Befehlsliste).
  • Bei der ersten gefundenen Übereinstimmung terminiert der case-Block.
  • Bei der Definition des Musters können die Sonderzeichen der bash zur Dateinamengenerierung verwendet werden.
  • Zusätzlich kann | für eine logische OR-Verknüpfung benutzt werden.

Beispiel

  • cat case1
#!/bin/bash
case $1 in
  rock|rocknroll)
    echo "stones sind gut"
  ;;
  schlager)
    echo "guildo ist ein gott"
  ;;
  volks)
    echo "was an der waffel?"
  ;;
  *)
    echo "kein bock auf musik"
  ;;
esac
  • ./case1 rock
stones sind gut
  • ./case1 rocknroll
stones sind gut
  • ./case1 schlager
guildo ist der meister 
  • ./case1 volks
was an der waffel?
  • ./case1 kllkjl
kein bock auf musik

Start Script

#!/bin/bash
case $1 in
start)
 echo start iperf
 iperf -s -D > /tmp/iperf.log
;;
stop)
 echo stop iperf
 pkill -x iperf
;;
status)
 echo status iperf
if pgrep -x iperf > /dev/null
  then
    P=$(ss  -lntp | grep iperf | tr -s " " | cut -f 4 -d " " | cut -d : -f 2)
    echo iperf is running on Port: $P
  else
    echo iperf stopped
fi
;;
restart)
$0 stop && $0 start
;;
esac

Aufgaben