Wie man richtig speichern der unix-top-Befehl die Ausgabe in eine variable?
Habe ich zum speichern der Ausgabe des top-Befehls in eine variable und ich Tue das:
myvar=`top -b -n1 | head -n 18`
Das problem ist, dass es scheint, zu ignorieren die Zeichen zurück, also wenn ich echo den Inhalt $myvar
ich sehe etwas wie:
top - 15:15:38 up 745 days, 15:08, 5 users, load average: 0.22, 0.27, 0.32 Tasks: 133 total, 1 running, 132 sleeping, 0 stopped, 0 zombie Cpu(s): 6.4% us, 1.6%sy, 0.0% ni, 91.7% id, 0.3% wa, 0.0% hi, 0.0% si Mem: 2074716k total, 2038716k used, 36000k free, 84668k buffers Swap: 4192924k total, 107268k used, 4085656k etc...
Wie kann ich speichern-alle top-Daten korrekt?
- Möchten Sie speichern es als bash-array? Gibt es ein bestimmtes Stück von Daten, die Sie brauchen? und wäre es nicht einfacher zu schreiben, um eine tmp-Datei?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den Unterschied bemerken:
Ausgabe:
Ohne die Anführungszeichen, wird der Inhalt der variable Boden in der shell-argument-Verarbeitung.
Wenn Sie auf der Suche für einen bestimmten Teil der info in der Ausgabe würde ich geneigt sein, filtern Sie die Ausgabe für das, was Sie suchen, bevor es zu speichern, anstatt alles festzuhalten und dann zu extrahieren, was Sie brauchen.
Könnten Sie Rohr Sie es durch sed zu fangen und verwandeln die Zeilenumbrüche, z.B.
ausgegeben wird CUSTOM_LINE_MARKER nach jeder Zeile. obwohl Rob Wells Antwort oben ist wohl ein besserer Ansatz.