Bash - Listenabruf
Hi, ich schreibe gerade ein Script, habe jedoch ein Problem! Ich würde gerne eine Liste von Versionen bereitstellen... Die if Kette soll dann prüfen, ob das input eine dieser Versionen entspricht! Beispiel:
Wir haben die Versionen 1.0, 2.6, 5.87 und 9.3. Nun gebe ich jedoch 4.33 ein, das Script gibt dann über echo eine Nachricht aus... Gebe ich jedoch 9.3 ein, wird dann der jeweilige Code ausgeführt...
Wir haben die Versionen 1.0, 2.6, 5.87 und 9.3. Nun gebe ich jedoch 4.33 ein, das Script gibt dann über echo eine Nachricht aus... Gebe ich jedoch 9.3 ein, wird dann der jeweilige Code ausgeführt...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 3919228301
Url: https://administrator.de/forum/bash-listenabruf-3919228301.html
Ausgedruckt am: 25.12.2024 um 20:12 Uhr
6 Kommentare
Neuester Kommentar
Bidde
https://stackoverflow.com/questions/3685970/check-if-a-bash-array-contai ...
Cheers
certguy
https://stackoverflow.com/questions/3685970/check-if-a-bash-array-contai ...
#!/bin/bash
array=(1.0 2.6 5.87 9.3)
[[ ${array[*]} =~ 9\.3 ]] && echo gefunden || echo nicht gefunden
Cheers
certguy
Der Ausdruck dort muss Regular Expression Syntax entsprechen und ein einfacher Punkt ist in Regex Syntax nunmal der Platzhalter für ein beliebiges Zeichen, muss deswegen korrekterweise mit Backslash escaped werden, sonst würde es auch einen String wie "9z3" im Array matchen.
Zitat von @Justman10000:
Wie jetzt? Also, wenn irgendwas vom Array im Input ist, wird die Kette getriggert?
Nein, lies meinen Absatz nochmal. Der Punkt hat in Regex Syntax eine besondere Bedeutung, sollte also escaped werden weil er für ein "beliebiges einzelnes Zeichen" steht.Wie jetzt? Also, wenn irgendwas vom Array im Input ist, wird die Kette getriggert?
Lesenswert dazu:
Regular Expressions Tutorial
Check if a string matches a regular expression