In diesem Beispiel beziehe ich mich auf die Erweiterung einer Folge von ganzen Zahlen, aber vielleicht (?) Wären die Grenzen für alle Aspekte der Klammererweiterung relevant. Diese allgemeinere Ansicht ist auch für mich von Interesse.
seq
scheint viel längere ganzzahlige Sequenzen zu verarbeiten als die {1..n} Klammererweiterung (zumindest ist dies in diesem Beispiel der Fall).
zB 'seq -f @% 12.0f 1 1000000000> / dev / null'. Dies erweitert 1 Milliarde ziemlich glücklich in 14m 04s
Allerdings echo {1..10000000000} >/dev/null
stürzt in Vergessenheit von der CLI in 'gnome-terminal' und 'konsole' (... Auf Wiedersehen Terminal - Session!)
Das Beste, was ich aus der Klammererweiterung für eine ganzzahlige Sequenz herausholen kann, ist ungefähr {1..15000000} .. nur 15 Millionen.
Ist dies eine Einschränkung der Klammererweiterung selbst oder des Umgangs echo
mit den erweiterten Daten? Es scheint durch die Verwendung des gesamten verfügbaren Arbeitsspeichers verursacht zu werden, aber ich dachte, es würde den swap
Bereich an diesem Punkt nutzen ...
Außerdem (übrigens) echo {..}
dauert diese 15000000-Ganzzahlsequenz 57,0 s; während seq
dauert nur 12,7s ...
bash: xmalloc: ../../../bash/lib/sh/stringvec.c:40: cannot allocate 11280523272 bytes (0 bytes allocated)
. (Bash 3.2.39, amd64.) 15000000 verursachte zu viel Tausch, also habe ich es getötet. Sie verlangen einfach zu viel von der armen Bash.