unix-map-Funktion
Ich habe ein array von Werten $dates
ich bin transformieren:
for i in $dates
do
date -d "1970-01-01 $i sec UTC" '+%a_%D'
done
Gibt es eine Möglichkeit das Ergebnis zu speichern, der diese operation so ich kann Rohr es auf etwas anderes, ohne das schreiben auf eine Datei auf der Festplatte?
- Sind Sie beschränkt auf bash? Wenn nicht, würde ich empfehlen, dies zu tun, in Perl... Karte kommt als Teil des Pakets.
- Wie groß ist das array? 10s, 100s, 1000s, größer? Warum kann Sie nicht auf den Datenträger geschrieben werden? Können Sie halten die Ergebnisse in einem anderen array? Warum nicht?
- Enthält Ihre version von
date
unterstützendate -d "@$i" '+%a_%D'
? - Auch technisch
$dates
wäre eine Liste statt einem array. Ihre Frage markiert sowohl[bash]
und[sh]
. In der Bourne-shell unterstützt keine arrays (aber die Bash das auch tut). Sind Sie targeting-Bash oder ist die Portabilität ein Problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie eine Funktion:
Dann kannst du z.B. die Ausgabe senden, um standard-Fehler:
for ... done >&2
.$(for i in $dates; do date -d "@$i" '+%a_%D'; done)
alle Zeit.$(...)
sind nicht notwendig. Sie können über die Pipeline die gesamtefor
als Dennis gezeigt hat. Wie infor ... done | 2nd-command
.Da Sie sagen, "verwandelt" ich nehme an, du meinst, dass Sie möchten, erfassen Sie die Ausgabe der Schleife in eine variable. Sie können sogar ersetzen Sie den Inhalt Ihrer
$dates
variable.bless $(for i in {0..127}; do printf '0x%06x ' $(($i * 0x4000)); done)
öffnen viele Dateien0x000000, 0x004000, 0x008000, 0x00c000, 0x010000, 0x014000, ...
auf einmal in einer logischen Reihenfolge.Ihre Frage ist ein wenig vage, aber die folgenden arbeiten:
Sie schreiben, könnte es zu einem FIFO -- eine "named pipe", das aussieht wie eine Datei.
Wikipedia hat eine anständige Beispiel für die Verwendung: http://en.wikipedia.org/wiki/Named_pipe
Bearbeiten, nicht die ganze Datei etwas:
Wenn die bash benutzen, könnten Sie ein array verwenden:
Können Sie dann echo /Rohr, das array zu einem anderen Programm. Beachten Sie, dass arrays sind bash-spezifisch, was bedeutet, dass dies nicht tragbar (naja, über Systeme, die bash) Lösung.
$()
. Sie werden separat ausgewertet, von denen außerhalb. In der Tat, in diesem Fall funktioniert es nicht. Sie tun kannarray+=(element)
und Sie haben nicht zu verfolgen, eine index-variable.set DATEARRAY[q]=...
).ash
(Almquist-shell) ist ein Vorgänger (?) derdash
(Debian Esche). Weder arrays. Ksh93 hat-arrays (ich bin mir nicht sicher über ksh88). Die version vonpdksh
(@(#)PD-KSH v5.2.14 99/07/13.2) ich haben muss-arrays. Zsh hat auch arrays.