Portál AbcLinuxu, 10. května 2025 06:10
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. [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
[[ "$1" == *[^a-zA-Z0-9]* ]] && echo fuj
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?if [[ "$1" == [0-9] ]] || [[ "$1" == [0-9][0-9] ]] then todo fiNebo
case "$1" in [0-9]|[0-9][0-9]) todo;; esaca 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
Nebo lépe:[[ "$1" == [0-9] ]] || [[ "$1" == [0-9][0-9] ]]
[[ "$a" == [0-9] || "$a" == [0-9][0-9] ]]
bash
e 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. [[ "$1" == *[^a-zA-Z0-9-_/]* ]] && echo fuj
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.