Portál AbcLinuxu, 13. května 2025 00:25

Dotaz: lehka otazka na Bash

9.8.2007 11:05 David | skóre: 21 | Praha
lehka otazka na Bash
Přečteno: 528×
Odpovědět | Admin
Ahoj, jak otestuji, ze promenna zacina na cislo? Mam na mysli neco takoveho
[ ^${PROMENA} = [0-9] ] , Diky, David
Nástroje: Začni sledovat (1) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

andree avatar 9.8.2007 11:20 andree | skóre: 39 | blog: andreeeeelog
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
najjednodussi ale nie tak celkom optimalny sposob:

[ `echo $var | grep "^[0-9]"` ]

(co ale zlyha ak to ma premenna viac ako jeden riadok)
9.8.2007 11:53 David | skóre: 21 | Praha
Rozbalit Rozbalit vše Re: lehka otazka na Bash
To bohate staci, diky :)
9.8.2007 12:14 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
>>> promenna = '4jabka'
>>> promenna[0].isdigit()
True
(prázdný řetězec vyhodí výjimku).
9.8.2007 12:37 outsider
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Nevim proc, ale pri cteni tehle odpovedi se mi vybavil vtip...
...Takhle vám normálne letí letadlo do Seattlu a venku je hrozná mlha, není vidět ani na deset metrů a najednou přestanou jít i všechny přístroje. Pilot celej zoufalej líta sem a tam, jestli neuvidí nějakej maják nebo něco podobnýho, ale ono nic a tak už mu pomalu dochází palivo a cestující jsou docela nervózní. Nakonec trhlinou v mlze uvidí velký mrakodrap a v posledním patře za oknem je v práci nějakej chlápek. Tak pilot vykoukne z letadla a volá: "Hej, dobrý muži, nevíte, kde jsem?" Chlápek odpoví: "Jistě. Jste v letadle." A tu pilot provede manévr, otočí se o 230 stupňů a provede čisté přistání na letišti o pět kilometrů dál. Cestující jsou samozřejmě úplně hotoví a ptají se, jak to dokázal. "Jednoduše," odpoví pilot. "Položil jsem tomu muži jednoduchou otázku. Jeho odpověď byla zcela správná, ale naprosto k ničemu. Z toho jsem usoudil, že ten mrakodrap musí být sídlo Microsoft HotLine a odtamtud je letiště pět kilometrů na severovýchod!" ...
9.8.2007 13:13 Jan Martinek | skóre: 43 | blog: johny | Brno
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Ten pilot byl inteligentní člověk, který dokázal informaci využít. A přesně pro takové lidi píšu své příspěvky, které jsou jinak naprosto k ničemu :-)
9.8.2007 15:43 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Tahle odpověď nejen že je k ničemu (to možná ani tak ne), ale hlavně není správná.
9.8.2007 15:45 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Odpovědět | | Sbalit | Link | Blokovat | Admin

Nejjednodušší (bez použití externích nástrojů) je asi

  case "$PROMENNA" in
    [0-9]*)
      # začíná
      ;;
    *)
      # nezačíná
      ;;
  esac
9.8.2007 15:49 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: lehka otazka na Bash
toto je najlepšie prenositelné riešenie. Pre bash (vraj od verzie 3) existuje operátor =~
9.8.2007 15:47 happy barney | skóre: 34 | blog: dont_worry_be_happy
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Odpovědět | | Sbalit | Link | Blokovat | Admin
var="1o"; [[ "$var" =~ "^[0-9]" ]] && echo OK
David Watzke avatar 9.8.2007 21:05 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: lehka otazka na Bash
Bacha na Bash 3.2, kterej to nematchne, když je regex v uvozovkách nebo mezi apostrofy...
“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.