Echo ps, während Zeilenumbrüche beibehalten werden?

8

Wenn ich ps ax in Terminal mache, wird das Ergebnis so aussehen:

%Vor%

Wenn ich echo $(ps ax) mache, bekomme ich:

%Vor%

Warum?

Und wie behalte ich die Zeilenumbrüche und Tabulatorzeichen?

    
Tyilo 07.07.2011, 19:26
quelle

6 Antworten

25

Wie immer: Verwenden Sie Anführungszeichen.

%Vor%     
Ignacio Vazquez-Abrams 07.07.2011, 19:30
quelle
5

Verwenden Sie einfach doppelte Anführungszeichen in der Variablen, die echoed

ist %Vor%

das wird es tun, ohne all das zusätzliche Junk-Coding oder Ärger.

edit: ugh ... jemand hat mich dazu geschlagen! lol

    
Jason 07.07.2011 19:36
quelle
2

Das liegt daran, dass echo überhaupt kein Piping ist - es interpretiert die Ausgabe von ps ax als Variable, und (nicht angeführte) Variablen in bash komprimieren im Wesentlichen Leerzeichen - einschließlich Zeilenumbrüchen.

Wenn Sie die Ausgabe von ps pipen möchten, dann pipen Sie es:

%Vor%     
Flimzy 07.07.2011 19:29
quelle
0

Oder wenn Sie zeilenweise Zugriff haben möchten:

%Vor%

Dies erfordert eine aktuelle (ish) bash-Version

    
sehe 07.07.2011 19:33
quelle
0

Überdenken Sie Ihr Problem / Ihre Lösung.

Wenn Sie $ (ps ax) möchten - mit beibehaltenen Zeilenumbrüchen - USUALLY bedeutet ein schlechtes Design und Sie möchten wahrscheinlich Pipes oder Umleitungen verwenden. Normalerweise - also, vielleicht ist es in Ordnung - wirklich zu fragen, was Sie erreichen wollen. :)

    
jm666 07.07.2011 20:59
quelle
-1

Sprechen Sie über Rohrleitungen die Ausgabe? Ihre Frage lautet "pipe", aber Ihr Beispiel ist eine Befehlsersetzung:

%Vor%

Nützlicher?

%Vor%

Wenn Sie über die Befehlsersetzung sprechen, brauchen Sie Zitate, auf die andere bereits hingewiesen haben Um die Shell zu zwingen, Whitespace nicht wegzuwerfen:

%Vor%     
David W. 07.07.2011 20:10
quelle

Tags und Links