GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie werden Zeilenumbrüche beibehalten, wenn die Befehlsausgabe in einer Variablen gespeichert wird?

Ich bin auf das gleiche Problem gestoßen, ein Zitat wird helfen

[email protected]:~/apps$ apps="abc
> def"
[email protected]:~/apps$ echo $apps
abc def
[email protected]:~/apps$ echo "$apps"
abc
def

Zitat Ihre Variablen. Hier ist der Grund:

$ f="fafafda
> adffd
> adfadf
> adfafd
> afd"

$ echo $f
fafafda adffd adfadf adfafd afd

$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd

Ohne Anführungszeichen ersetzt die Shell $TEMP mit den darin enthaltenen Zeichen (eines davon ist ein Zeilenumbruch). Dann vor dem Aufruf von echo Shell teilt diesen String mit Internal Field Separator in mehrere Argumente auf (IFS) und übergibt diese resultierende Liste von Argumenten an echo . Standardmäßig ist die IFS auf Leerzeichen (Leerzeichen, Tabulatoren und Zeilenumbrüche) eingestellt ist, also hackt die Shell Ihre $TEMP String in Argumente und es bekommt nie den Zeilenumbruch zu sehen, weil die Shell es als Trennzeichen betrachtet, genau wie ein Leerzeichen.


Linux
  1. Wie weist man die Ausgabe eines Befehls einer Shell-Variablen zu?

  2. Ausgabe des Befehls in Shell-Variable speichern?

  3. Wie werden Ssh-Remote-Befehlszeilenargumente analysiert?

  4. So verwenden Sie Befehlszeilen-Shell-Funktionen in Linux

  5. Wie speichert man einen Befehl in einer Variablen in einem Shell-Skript?

So weisen Sie einer Variablen die Ausgabe eines Linux-Befehls zu

So führen Sie Shell-Befehle über einen HTTP-Server aus

So leiten Sie die Shell-Befehlsausgabe um

So ändern Sie die Ausgabefarbe von „Echo“ in Linux

So speichern Sie einen Linux-Befehl als Variable im Shell-Skript

Wie liest man Befehlszeilenargumente in Shell-Skripten?