Próbuję porównać dwa ciągi w skrypcie bash i otrzymuję bardzo dziwne wyniki.Porównanie bash stringów
if [[ "010" < "01." ]]; then echo "Wrong"; else echo "OK"; fi
if [[ "010" < "01.0" ]]; then echo "Wrong"; else echo "OK"; fi
if [ "010" \< "01." ]; then echo "Wrong"; else echo "OK"; fi
if [ "010" \< "01.0" ]; then echo "Wrong"; else echo "OK"; fi
Czytając dokumentację wydawało się, że [[ < ]]
i [ \< ]
powinien działać tak samo, ale tak nie jest. Wydaje się, że [[ < ]]
działa nieprawidłowo, gdy łańcuchy nie mają tej samej długości. Czy czegoś brakuje?
Edytuj: Spodziewany wynik to 4 x OK
. Testowane na:
- CentOS uwolnienia 6,4 (końcowe) - GNU Basha, wersja 4.1.2 (1) -release (x86_64-RedHat'cie Linux-gnu) (
OK Wrong OK OK
) - Ubuntu 14.04.2 LTS - GNU bash, wersja 4.3.11 (1) - wydanie (x86_64-pc-linux-gnu) (
OK Wrong OK OK
) - openSUSE 13.1 (butelka) (x86_64) - GNU bash, wersja 4.2.53 (1) -release (x86_64- suse-linux-gnu) (
OK OK OK OK
)
mógłbyś dodać ou tput skryptu? – moffeltje
Wszystko mi odpowiada ok. – 123
Drugi mówi "źle dla mnie" na 'GNU bash, wersja 4.3.39'. – fedorqui