Ich habe über Zahlen in verschiedener Reihenfolge iteriert. Ich kann sie in aufsteigender Reihenfolge anzeigen, auch mit Schritten wie:
$ seq --separator="," 1 10
1,2,3,4,5,6,7,8,9,10
$ seq --separator="," 1 2 10
1,3,5,7,9
Ich kann sie auch in umgekehrter Reihenfolge anzeigen, weder fortlaufend noch schrittweise.
$ seq --separator="," 10 1
$ seq --separator="," 10 2 1
Keine Ausgabe für obige Befehle.
Meine Shell-Details:
$ bash --version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
Lassen Sie mich wissen, wie ich die Zahlen in absteigender Reihenfolge anzeigen kann?
command-line
seq
mtk
quelle
quelle
seq
ist es ein völlig nicht standardisiertes Tool und es gibt keine Garantie dafür, dass zwei Implementierungen gleich sind. Wenn Sie eine Schleife , die wiederholt sich rückwärts über Zahlen in Bash, Gebrauch schreiben müssenfor ((i=$max;i>=0;i--)) …
oder dergleichen.Antworten:
Verwenden Sie ein negatives Inkrement
quelle
Im Allgemeinen möchten Sie es nicht verwenden
seq
, es ist nicht portabel (selbst in Standard-Linux-Umgebungen). Wenn Sie ksh, zsh oder bash4 + verwenden, können Sie die geschweifte Klammer verwenden:quelle
seq
nicht der Standard ist und dann die reine Bash-4-Klammer-Erweiterung verwenden. ;)seq
dies nicht der Fall ist.Ein anderer Weg in pure bash, ksh oder zsh:
Ein reiner POSIX-Weg:
quelle
for
Der zweite Ausdruck sollte der Test und der dritte der Schritt sein.Jetzt Standard POSIX diejenigen:
(interessanterweise mit
mawk
(und in geringerem Maßgawk
auch) viel schneller als GNUseq
füri = 10000000
statti = 10
)Oder
(wäre nur mit wenigen Iterationen effizienter, insbesondere mit
bash
)Oder
(Dies würde Zahlen jeder Größe unterstützen, aber beachten Sie, dass nach einer bestimmten Anzahl von Ziffern (Zahlen größer als 10 bis 70 im POSIX-Gebietsschema) Zeilen mit Backslashes umbrochen werden.)
quelle
BC_LINE_LENGTH=0
in der Umgebung einstellen . Kein Glück bei anderen Implementierungen.s=$s,$i
oder Anrufecho -n
/echo \c
/printf
?Sie können die Reihenfolge mit
tac
(Katze in umgekehrter Reihenfolge) umkehren. Auch wennseq
sich auf verschiedenen Systemen etwas anders verhalten sollte, sollte meines Erachtens Folgendes so portabel wie möglich sein:quelle
Versuche es mit:
Beispiel:
$ seq 10 -1 1
quelle