justman10000
Goto Top

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...

Content-ID: 3919228301

Url: https://administrator.de/forum/bash-listenabruf-3919228301.html

Ausgedruckt am: 25.12.2024 um 20:12 Uhr

3803037559
Lösung 3803037559 12.09.2022, aktualisiert am 13.09.2022 um 10:42:58 Uhr
Goto Top
Bidde
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
erikro
erikro 13.09.2022 um 10:35:35 Uhr
Goto Top
Moin,

hilfreich wäre, wenn Du das Skript mal postest.

Liebe Grüße

Erik
Justman10000
Justman10000 13.09.2022 aktualisiert um 16:48:02 Uhr
Goto Top
Zitat von @3803037559:

Bidde
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

Vielen dank 🙂! Doch wofür steht das \.?
3803037559
3803037559 13.09.2022 aktualisiert um 16:50:40 Uhr
Goto Top
Zitat von @Justman10000:
Vielen dank 🙂! Wofür steht das \.?
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.
Justman10000
Justman10000 13.09.2022 aktualisiert um 16:50:47 Uhr
Goto Top
Zitat von @3803037559:

Zitat von @Justman10000:
Vielen dank 🙂! Wofür steht das \.?
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 escaped werden, sonst würde es auch einen String wie "9z3" matchen.

Wie jetzt? Also, wenn irgendwas vom Array im Input ist, wird die Kette getriggert?
3803037559
3803037559 13.09.2022 aktualisiert um 16:59:55 Uhr
Goto Top
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.
Lesenswert dazu:
Regular Expressions Tutorial
Check if a string matches a regular expression