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

Dotaz: Problém s IF

7.11.2012 11:33 jardA
Problém s IF
Přečteno: 311×
Odpovědět | Admin
Ahoj, proč nefunguje tato podmínka. Díky
A=54
B=2
if [ $A -gt $B ].. # toto funguje

if [[ $A > $B ]].. # toto funguje nějak divně, téměř vůbec

Řešení dotazu:


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

Odpovědi

7.11.2012 11:45 Sten
Rozbalit Rozbalit vše Re: Problém s IF
Odpovědět | | Sbalit | Link | Blokovat | Admin
Pro zadané hodnoty mi funguje oboje. Ale třeba pro A=24 a B=5 to uvede, že A je menší, protože [[ řadí lexikologicky (podl abecedy) a [ řadí numericky.
7.11.2012 11:52 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: Problém s IF
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tipnu si to druhé dělá toto:
54 > 2 = true
54 > 9 = false
54 > 55 = false
54 > 53 = true
a dělá to proto, že to porovnává jako řetězce, ne jako čísla.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
7.11.2012 13:32 kuka
Rozbalit Rozbalit vše Re: Problém s IF
Odpovědět | | Sbalit | Link | Blokovat | Admin
A nefunguje co? k tomu co to ma delat viz man bash.
pavlix avatar 7.11.2012 15:04 pavlix | skóre: 54 | blog: pavlix
Rozbalit Rozbalit vše Re: Problém s IF
Odpovědět | | Sbalit | Link | Blokovat | Admin
if [[ $A > $B ]].. # toto funguje nějak divně, téměř vůbec
To je mi popis problému. Tipoval bych, že to funguje úplně přesně tak jak to podle dokumentace fungovat má.
Já už tu vlastně ani nejsem. Abclinuxu umřelo.
Řešení 1× (Michal Vyskočil)
7.11.2012 15:30 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Problém s IF
Odpovědět | | Sbalit | Link | Blokovat | Admin
Operátory > a <, ač se to na první pohled nezdá :), jsou určeny pro lexikografické porovnávání, tedy lze jimi srovnávat řetězce podle abecedy, nikoliv čísla podle velikosti. Více v manuálu (man bash).
7.11.2012 15:32 Ash | skóre: 53
Rozbalit Rozbalit vše Re: Problém s IF
Ve vašem případě tedy neváhejte a používejte toto:

if [[ $A -gt $B ]] ...

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.