Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Johny_servis 26. 11. 2014, 14:26:50
-
Ahoj
Potřebuji porovnat 2x dvě desetinná čísla a pokud budou obě dvě větší než nastavená úroveň, tak se provede "then" blok za podmínkou if, jinak pokračuje dále ve skriptu. Zkoušel jsem už všechno možné - nakonec jsem dospěl k této variantě:
#!/bin/bash
A=14.9
B=27
if [[ $(("$A >= 15.0" | bc -l)) && $(("$B >= 15.0" | bc -l)) ]]; then
...
fi
V tomto konkrétním případě by se blok "then" neměl provést, protože nebude splněna podmínka (A je totiž menší než 15). Výstupem ale je:
"14.9 >= 15.0" | bc -l: syntax error: operand expected (error token is ""14.9 >= 15.0" | bc -l")
Zkoušel jsem už různě měnit závorky a uvozovky systémem pokus-omyl, ale nedošel jsem k výsledku. Neví prosím někdo jak takový problém vyřešit ? (dokud jsem používal celá čísla tak to fungovalo, ale potřebuji právě desetinná)
Děkuji
-
Mně to funguje
jakub@aman:~$ echo "14.9<=15" | bc -l
1
jakub@aman:~$ echo "14.9>=15" | bc -l
0
bc 1.06.95
3.16.0-4-amd64 #1 SMP Debian 3.16.7-2 (2014-11-06) x86_64
-
if (( $(bc <<< "$a > $b") == 1 ))
-
Díky moc, už to funguje. Celá konstrukce teď u mě vypadá takto:
if [[ $(bc <<< "$A >= 15.0") == 1 ]]&&[[ $(bc <<< "$B >= 15.0") == 1 ]]; then
...
fi
-
Klidne si muzes i to && prehodit do BC, protoze ten logicke spojky umi.