Portál AbcLinuxu, 12. května 2025 06:36
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:
[[
řadí lexikologicky (podl abecedy) a [
řadí numericky.
54 > 2 = true 54 > 9 = false 54 > 55 = false 54 > 53 = truea dělá to proto, že to porovnává jako řetězce, ne jako čísla.
To je mi popis problému. Tipoval bych, že to funguje úplně přesně tak jak to podle dokumentace fungovat má.if [[ $A > $B ]].. # toto funguje nějak divně, téměř vůbec
>
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
).
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.