Bash Der case-Block: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
 
Zeile 41: Zeile 41:
case $1 in
case $1 in
start)
start)
echo start iperf
  echo start iperf3
iperf -s -D > /tmp/iperf.log
  iperf3 -s -D --logfile /tmp/iperf3.log
;;
;;
stop)
stop)
echo stop iperf
  echo stop iperf3
pkill -x iperf
  pkill -x iperf3
;;
;;
status)
status)
echo status iperf
  echo status iperf3
if pgrep -x iperf > /dev/null
if pgrep -x iperf3 > /dev/null
   then
   then
     P=$(ss  -lntp | grep iperf | tr -s " " | cut -f 4 -d " " | cut -d : -f 2)
     P=$(ss  -lntp | grep iperf3 | tr -s " " | cut -f 4 -d " " | cut -d : -f 2)
     echo iperf is running on Port: $P
     echo iperf3 is running on Port: $P
   else
   else
     echo iperf stopped
     echo iperf3 stopped
fi
fi
;;
;;
restart)
restart)
$0 stop && $0 start
  $0 stop && $0 start
;;
*)
  echo "USAGE: $0 start|stop|status|restart"
;;
;;
esac
esac
</syntaxhighlight>
</syntaxhighlight>
= Aufgaben =
= Aufgaben =
*[[Aufgaben Bash case]]
*[[Aufgaben Bash case]]

Aktuelle Version vom 26. November 2025, 11:03 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 iperf3
   iperf3 -s -D --logfile /tmp/iperf3.log
;;
stop)
  echo stop iperf3
  pkill -x iperf3
;;
status)
  echo status iperf3
if pgrep -x iperf3 > /dev/null
  then
    P=$(ss  -lntp | grep iperf3 | tr -s " " | cut -f 4 -d " " | cut -d : -f 2)
    echo iperf3 is running on Port: $P
  else
    echo iperf3 stopped
fi
;;
restart)
  $0 stop && $0 start
;;
*)
  echo "USAGE: $0 start|stop|status|restart"
;;
esac

Aufgaben