Am Sam, 2002-04-13 um 05.42 schrieb David Haller:
Hallo,
On Fri, 12 Apr 2002, Bernhard Walle wrote:
On Fri, 12 Apr 2002 at 09:02 (+0200), David Haller wrote:
On Thu, 11 Apr 2002, Michael Jakscht wrote:
if [ "$test_variable" <= "10" ] ; then echo "$test_variable" fi
[ ist ein alias (oder so) auf test, und dazu sagt dir 'help [' bzw. 'help test' alles noetige...
Darf man jetzt auf dieser Liste neuerdings kein [ ] mehr verwenden, bloß weil einige hier der Meinung sind, dass test besser wäre?
Doch, natuerlich darf man -- wenn man weiss, dass dahinter 'test' steckt (was einem 'help [' auch verraet), und man somit in 'help test' oder 'man test' die Hilfe findet, die man braucht, um herauszufinden, warum o.g. Beispiel nicht klappt.
<*g*> Zwei Gründe: 1. "<=" 2. Syntaxerror bei leerem "$test_variable" Drum: Nicht help [, sondern man test lesen. <pedantic> Es gibt verschiedene (gute) Gründe "[" nicht zu verwenden: 1. Es gibt (ältere) Systeme, auf denen "[" nicht vorhanden ist, test hingegen schon (Auch bei SuSE ist "[" ein Symlink auf /usr/bin/test - Spielt unter SuSE aber praktisch keine Rolle, da test und "[" Built-ins der meisten (aller?) Shells sind). 2. Es gibt (ältere) Systeme, auf denen "[]" ein "Path-Separator" ist (ähnlich '\' unter DOS, bzw. '/' unter Unix) 3. In grösseren Scripten ist "[ ... ]" nur schwer suchbar (mittels Editorsuchfunktionen, grep, sed u.ä.) 4. Verwechselungsgefahr mit Array-Indizes. Manche Leute gehen soweit, zu empfehlen in Scripten nur /usr/bin/test (mit absolutem Pfad) zu verwenden, da nur so sichergestellt werden kann, dass sich "test|[" in Scripten auch bei unterschiedlichen Shells deterministisch verhält, da es subtile Unterschiede (und Bugs) in den unterschiedlichen "test"-Implementierungen der unterschiedlichen Shells gibt. In autoconf-configure-Scripten kommt noch hinzu, dass autoconf '[]' als m4-Quoting-Zeichen (Als "Anführungszeichen") verwendet. </pedantic> Unter Linux spielt es aber kaum eine Rolle, ob man "test" oder "[" verwendet. Ralf.