Wie kann ich ein if-then Script erweitern um mehrere optionen?

1 Antwort

In einem shell-script geht das am elegantesten mit "case"

https://openbook.rheinwerk-verlag.de/shell_programmierung/shell_006_007.htm#RxxKap00600704004E291F02C172

Beispiel

# Demonstriert die case-Anweisung
# acase1
tag=`date +%a`
case "$tag" in
  Mo)   echo "Mo : Backup Datenbank machen" ;;
  Di)   echo "Di : Backup Rechner Saurus"   ;;
  Mi)   echo "Mi : Backup Rechner Home"     ;;
  Do)   echo "Do : Backup Datenbank machen" ;;
  Fr)   echo "Fr : Backup Rechner Saurus"   ;;
  Sa)   echo "Sa : Backup Rechner Home"     ;;
  So)   echo "So : Sämtliche Backups auf CD-R sichern" ;;
esac

vefan 
Beitragsersteller
 12.06.2024, 10:26

Danke für den Tipp, aber mit case habe ich es leider nicht hinbekommen.

Nach etlichen Versuchen funktioniert es mit mehreren elif im Script . Wenn man erst mal weiß wie es funktioniert ist es ganz easy zu erweitern.

Gibt es eigentlich einen Script-Generator für Linux, wo man die gewünschten Funktionen angibt und dann wird ein fertiges Script generiert? Das wäre super für zukünftige Anwendungsfälle.

So sieht nun das fertige Script aus mit unterschiedlichen Browsern je nach Domains, weil mit einem Browser funktionieren gewisse Seiten nicht richtig, die mit dem anderen wiederum gehen.

Super ist das mit dem Script auch die Urls aus externen Anwendungen heraus den entsprechenden Browsern zugeordnet werden.

#!/bin/bash

# Reading argument values using loop

isFound=0;

for argval in "$@"

do

 #echo -n "$argval "

 if [[ $argval == *reddit* ]]; then

   isFound=1;

 elif [[ $argval == *youtu* ]]; then

  isFound=2;

 elif [[ $argval == *heise.de* ]]; then

  isFound=3;

  break;

 fi

done

if [[ isFound -eq 1 ]]; then

  /home/user/Downloads/ungoogled-chromium_124.0.6367.118-1.AppImage $@;

elif [[ isFound -eq 2 ]]; then

  /opt/FreeTube/freetube %U $@;

elif [[ isFound -eq 3 ]]; then

  /usr/bin/brave-browser-stable %U $@;

else

  /home/user/Downloads/openbydomain-master/openbydomain.py $@;

fi

1