GNU/Linux >> Linux Esercitazione >  >> Linux

Come preservare le interruzioni di riga durante la memorizzazione dell'output del comando in una variabile?

Ho riscontrato lo stesso problema, una citazione aiuterà

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

Citazione le tue variabili Ecco perché:

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

$ echo $f
fafafda adffd adfadf adfafd afd

$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd

Senza virgolette, la shell sostituisce $TEMP con i caratteri che contiene (uno dei quali è una nuova riga). Poi, prima di invocare echo shell divide quella stringa in più argomenti usando il Internal Field Separator (IFS) e passa l'elenco di argomenti risultante a echo . Per impostazione predefinita, il IFS è impostato su spazi bianchi (spazi, tabulazioni e newline), quindi la shell taglia il tuo $TEMP stringa in argomenti e non riesce mai a vedere la nuova riga, perché la shell lo considera un separatore, proprio come uno spazio.


Linux
  1. [Linux]:come escludere la directory quando si utilizza il comando shell "tar".

  2. Come assegnare l'output di un comando a una variabile di shell?

  3. Memorizzazione dell'output del comando nella variabile Shell?

  4. Come vengono analizzati gli argomenti della riga di comando remota Ssh?

  5. Come impostare una variabile uguale all'output di un comando in Grub2?

Come eseguire i comandi della shell tramite il server HTTP

Come reindirizzare l'output del comando della shell

Come modificare il colore di output di "Echo" in Linux

Come memorizzare un comando Linux come variabile nello script della shell

Come leggere gli argomenti della riga di comando negli script della shell?

Ottieni la prima riga dell'output di un comando di shell