On 7 Sep 2001, at 17:36, Heiner Lamprecht wrote:
Am Freitag, 7. September 2001 11:33 schrieb Erhard Schwenk:
Am Fri, 07 Sep 2001 schrieb Bernd Brodesser:
Die Skripte werden in der Reihenfolge ausgeführt, in der sie an "for" übergeben werden.
Und die ist alphabetisch. Besser gesagt in der ASCII-Reihenfolge.
Hmm ist in diesem Fall sicher korrekt, aber darauf würde ich mich nicht verlassen. Ich hab jetzt kein entsprechendes Standard-Dokument gelesen, aber ich könnte mir vorstellen, daß die Reihenfolge durch die Zahlen gegeben und die Reihenfolge für Links mit identischen Zahlen ganz einfach "undefined" ist. Das hieße, daß eine andere Distri oder ein anderer SysV-Init diese Skripte dann durchaus auch parallel ausführen könnte.
Das hiesse dann aber, dass das Verhalten ein und der selben Shell unter verschiedenen Systemen "undefined" ist.
Wieso? Ich denke, die Init-Skripte werden überall unter /xx/sh laufen. (Ich habe es gerade auf einer Sun Ultra Enterprise 10000 mit SunOS 5.6 überprüft). Ich denke, was Erhard meint ist: Wo steht geschrieben, das die Reihenfolge zwingend so ist? Vielleicht ist offiziell das einzige die Reihenfolge steuernde Element das Sxx (sprich: die Zahl) und der Rest des Namens ist für die Reihenfolge nicht wichtig. Das würde dann bedeuten, das man sich (ausgehend von diesem Standard) nicht zwingend auf eine lexikografische Reihenfolge verlassen kann, sondern das innerhalb einer Zahl eine beliebige Reihenfolge denkbar ist. Die Implementation mittels einer Schleife "for f in /etc/rc3.d/S*" (aus /sbin/rc3 der Sun) führt die Skripte S* alle in lexikografischer Reihenfolge aus. Das kann doch aber auch Zufall sein, oder? Ich habe gerade mal man bsh/sh kurz angelesen. Da find ich nix davon, das die Reihenfolge so sein muß. for name [ in word ... ] do list done Each time a for command is executed, name is set to the next word taken from the in word list. If in word ... is omitted, then the for command executes the do list once for each positional parameter that is set (see Parameter Substitution section below). Execution ends when there are no more words in the list. Gut, die sh verhält sich so und es funktioniert wohl auch, aber wo steht das? Adreas