All diese Probleme haben meine lokalen Einstellungen verursacht. Mein Ubuntu ist auf Tschechisch:
$ echo $LANG
cs_CZ.UTF-8
In dieser lokalen Einstellung ist es kein Dezimalpunkt, sondern ein Dezimalkomma, das Integer vom Rest trennt (wie wir im Mathematikunterricht dachten, schreiben wir in unserer Sprache wirklich Komma statt Punkt).
Deshalb:
echo '0,03 >> 0,4 >
> -0,3 >
> 0' | sort -n
> 0
> -0,3 >
> 0,4 >
0,03 >
Wenn Sie ein Bash-Skript schreiben, stellen Sie die Sortierroutine so ein, dass sie die "normalen" Einstellungen verwendet.
export LC_ALL=C
Das Problem liegt möglicherweise in Ihrem Sortierbefehl. Wenn ich dasselbe ausführe, ist mein Ergebnis wie erwartet:
$ echo '0.00159265291648695254
> -0.00318530179313823899
> 0
> 0.00999983333416666468
> 0.00362937767285478371
> 0.00477794259012844049
> -0.00637057126765263261
> 0.00681464007477014026
> -0.00840724736714870645
> -0.00522201549675090458' | sort -n
-0.00840724736714870645
-0.00637057126765263261
-0.00522201549675090458
-0.00318530179313823899
0
0.00159265291648695254
0.00362937767285478371
0.00477794259012844049
0.00681464007477014026
0.00999983333416666468
Sie sollten GNU Sort verwenden, wenn Sie es nicht verwenden
sort (GNU coreutils) 5.93
Copyright (C) 2005 Free Software Foundation, Inc.
This is free software. You may redistribute copies of it under the terms of
the GNU General Public License <http://www.gnu.org/licenses/gpl.html>.
There is NO WARRANTY, to the extent permitted by law.
Written by Mike Haertel and Paul Eggert.