GNU/Linux >> Znalost Linux >  >> Linux

Jak zachovat konce řádků při ukládání výstupu příkazu do proměnné?

Narazil jsem na stejný problém, pomůže nabídka

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

Citace vaše proměnné. Zde je důvod:

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

$ echo $f
fafafda adffd adfadf adfafd afd

$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd

Bez uvozovek shell nahradí $TEMP se znaky, které obsahuje (jeden z nich je nový řádek). Potom před vyvoláním echo shell rozdělí tento řetězec na více argumentů pomocí Internal Field Separator (IFS) a předá výsledný seznam argumentů echo . Ve výchozím nastavení IFS je nastaveno na mezery (mezery, tabulátory a nové řádky), takže shell seká vašich $TEMP řetězec do argumentů a nikdy neuvidí nový řádek, protože jej shell považuje za oddělovač, stejně jako mezeru.


Linux
  1. [Linux] :Jak vyloučit adresář při použití příkazu shellu „tar“.

  2. Jak přiřadit výstup příkazu proměnné shellu?

  3. Jak zopakovat nový řádek ve skriptech Bash Shell

  1. Jak přiřadit výstup příkazu Linux k proměnné

  2. Ukládání výstupu příkazu do proměnné Shell?

  3. Získejte první řádek výstupu příkazu shellu

  1. Jak předat argument příkazového řádku do skriptu Shell?

  2. Musím při přiřazování jejich výstupu k proměnné citovat substituce příkazů?

  3. Jak se analyzují argumenty vzdáleného příkazového řádku Ssh?