Wie kann ich ein if-then Script erweitern um mehrere optionen?
Hallo
Ich habe hier ein funktionierendes Script, dass ich gerne um mehrere if-then Optionen erweitern möchte.
Ich möchte domains systemweit mit unterschiedlichen Browsern und Anwendungen öffnen. Das Script ist so aufgebaut das Youtube-Links mit Freetube geöffnet werden und alle anderen http(s) Links mit Librewolf. Das Script habe ich in den Linux Mint Standardeinstellungen als Internet-Default-Anwendung eingestellt.
Das Script funktioniert im Zusammenspiel mit openbydomain.py von https://github.com/int-ua/openbydomain/. Alle http(s) Links werden zu openbydomain weitergeleitet.
Wie kann ich das Script erweitern um mehrere if-then Optionen. Ich möchte das z.B. alle abc.com Domains mit "/usr/bin/brave-browser-stable %U" geöffnet werden und alle defg.com Domains mit "/home/user/Downloads/ungoogled-chromium_124.0.6367.118-1.AppImage"
Hier ist das funktionierende Youtube Script:
#!/bin/bash
# Reading argument values using loop
isFound=0;
for argval in "$@"
do
#echo -n "$argval "
if [[ $argval == *youtu* ]]; then
isFound=1;
break;
fi
done
if [[ isFound -eq 1 ]]; then
/opt/FreeTube/freetube %U $@;
else
/home/user/Downloads/openbydomain-master/openbydomain.py $@;
fi
Hier die openbydomain.csv config:
Domain,Executable
default,/usr/bin/librewolf
1 Antwort
In einem shell-script geht das am elegantesten mit "case"
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
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