Portál AbcLinuxu, 10. května 2025 06:10

Dotaz: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0-9]?

David Watzke avatar 2.1.2006 04:20 David Watzke | skóre: 74 | blog: Blog... | Praha
Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0-9]?
Přečteno: 187×
Odpovědět | Admin
Ahoj. Zajímalo by mně jak napsat podmínku (if), která bude pravdivá jen když proměnná ($1) bude obsahovat jiné znaky než a-z, A-Z a 0-9. Přemýšlel jsem nad tím, ale zatím jsem nic nevykoumal. :-(
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
Nástroje: Začni sledovat (2) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.1.2006 07:02 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
Odpovědět | | Sbalit | Link | Blokovat | Admin
Např.
[ivok@zero ~]$ echo abcd_EFGH123 |grep -q '[^a-zA-Z0-9]'; echo $?
0
[ivok@zero ~]$ echo abcdEFGH123 |grep -q '[^a-zA-Z0-9]'; echo $?
1
2.1.2006 07:04 zabza | skóre: 52 | blog: Nad_sklenkou_cerveneho
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
jo ještě jsem zapoměl dodat - bacha na locales.
2.1.2006 11:02 roman
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
v prikazovom riadku
premenna="[a-z][A-Z][0-9]"
ls $premenna, alebo... cokolvek, funguje to. :-)
2.1.2006 13:37 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
Odpovědět | | Sbalit | Link | Blokovat | Admin
[[ "$1" == *[^a-zA-Z0-9]* ]] && echo fuj
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
14.12.2006 12:11 petr (zacatecnik)
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0

pouzil jsem zapis [[ "$1" == [0-9] ]] pro zjisteni zda obsahuje jednocif. cislo.

stejne tak mi funguje i [[ "$1" == [0-9][0-9] ]] pro doucif. cisla

jenom nemuzu prijit na to jak pouzit u techto vyrazu operator || (nebo). At to pisu jak to pisu - nefunguje... Muzete mi poradit?
14.12.2006 14:29 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
if [[ "$1" == [0-9] ]] || [[ "$1" == [0-9][0-9] ]]
then
  todo
fi
Nebo
case "$1" in
  [0-9]|[0-9][0-9]) todo;;
esac
a nebo využít vymožeností bash 3.[01] a pak počítat s tím, že ve 3.2 ti něco třeba přestane fungovat :-(
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
David Watzke avatar 14.12.2006 15:00 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
[[ "$1" == [0-9] ]] || [[ "$1" == [0-9][0-9] ]]
Nebo lépe:
[[ "$a" == [0-9] || "$a" == [0-9][0-9] ]]
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
14.12.2006 15:16 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
Hmm, tak tohle mě na dokumentaci bashe tak trochu začíná srát. Takže v sekci CONDITIONAL EXPRESSIONS se dočtu, že se to týká [[, test a builtin [ a o spojování jednotlivých výrazů ani slovo s odkazem, že podrobněji v popisu builtin test. No tam se dočtu
              expr1 -o expr2
                     True if either expr1 or expr2 is true.
což v [[ nefunguje a dál jsem nic nenašel. No a k tomu se nám přidalo to nadělení s uvozovkama kolem argumentu =~. Řekl bych, že s takovou se raději poohlédnu po nějakém jiném shellu. Tohle není shell, ale bordel. :-(
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
14.12.2006 16:47 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
Ahá, už jsem to našel, takže je to v sekci Compound Commands. Bezva, takže až to budu zase hledat ...
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
David Watzke avatar 2.1.2006 15:19 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0-9]?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Díky všem. :-)
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
David Watzke avatar 2.1.2006 15:31 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0-9]?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Woops... a co kdyby tam byly ještě znaky: - _ / bezi těmi a-z, atd.? Nějak jsem na to zapomněl. :-(
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
2.1.2006 15:43 Hynek (Pichi) Vychodil | skóre: 43 | blog: Pichi | Brno
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
[[ "$1" == *[^a-zA-Z0-9-_/]* ]] && echo fuj
XML je zbytečný, pomalý, nešikovný balast, znovu vynalézané kolo a ještě ke všemu šišaté, těžké a kýčovitě pomalované.
David Watzke avatar 2.1.2006 16:13 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Bash: Jak ověřit, zda proměnná obsahuje jen znaky [a-z] [A-Z] a [0
Existuje něco, co neumíš? :-D Díky.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon

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.