Portál AbcLinuxu, 12. května 2025 21:31

Dotaz: Bash podmienka s vymenovanymi hodnotami

25.11.2013 11:32 timeos | skóre: 32
Bash podmienka s vymenovanymi hodnotami
Přečteno: 542×
Odpovědět | Admin
Ahojte

riesim v podstate dost jednoduchu vec. potrebujem spravit podmienku, ktorou chcem overit ci IP adresa (z predchadzajuceho kodu) je alebo nie je v zozname excludovanych adries (ktorych sa dalsi vypocet/kod nema tykat. No a problem je, ako tu podmienku spravit co najjednoduhsie.

V podmienke testujem len cislo z posledneho octetu, teda podsiet/siet ostava rovnaka. Priklad:

Mam zoznam excludovanych cisel posledneho oktetu: 1,63,64,65,127,128,129,191,192,193. A ak spracovavana IP adresa obsahuje cislo z tohto zoznamu v poslednom oktete chcem, aby sa dalsie vykonavanie preskocilo (break).

Momentalne ma napada len najjednoduhsia vec: s pouzitim if [ "$ip" =~ "*.*.*.1" ] || [ "$ip" =~ "*.*.*.63" ] || [ "$ip" =~ "*.*.*.64" ] ... co je samozrejme dost krkolomne a neprehladne. Existuje nejaky jednoduhsi zapis tejto podmienky?

vdaka!

Řešení dotazu:


Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (timeos (tazatel))
25.11.2013 12:09 Petr
Rozbalit Rozbalit vše Re: Bash podmienka s vymenovanymi hodnotami
Odpovědět | | Sbalit | Link | Blokovat | Admin
if [[ $ip =~ \.(1|63|64|65|127|128|129|191|192|193)$ ]]; then ...
Řešení 1× (timeos (tazatel))
25.11.2013 12:10 Vojtěch Horký | skóre: 39 | blog: Vojtův zápisník | Praha
Rozbalit Rozbalit vše Re: Bash podmienka s vymenovanymi hodnotami
Odpovědět | | Sbalit | Link | Blokovat | Admin
case "$ip" in
    *.1|*.63|*.64|...) break;;
    *) ;;
esac
Popř. jde i ten seznam dávat z proměnné (tedy, že exclude='*.1|*.63|*.64').
I am always ready to learn although I do not always like to be taught. (W. Churchill)
Řešení 1× (timeos (tazatel))
25.11.2013 17:27 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Bash podmienka s vymenovanymi hodnotami
Odpovědět | | Sbalit | Link | Blokovat | Admin
shopt -s extglob
[[ $ip = 192.168.0.@(1|2|3|4|5) ]] &&
    break
If you hold a Unix shell up to your ear, you can you hear the C.
25.11.2013 19:05 timeos | skóre: 32
Rozbalit Rozbalit vše Re: Bash podmienka s vymenovanymi hodnotami
Odpovědět | | Sbalit | Link | Blokovat | Admin
dakujem vsetkym za skvele typy! o tychto moznostiach som fakt nevedel... vkuse som sa snazil robit zapis typu "$ip =~ 192.168.4.[1|9|63|...]" co samozrejme nebolo funkcne...

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.