GNU/Linux >> Tutoriels Linux >  >> Linux

Comment conserver les sauts de ligne lors du stockage de la sortie de la commande dans une variable ?

J'ai rencontré le même problème, un devis m'aidera

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

Citation vos variables. Voici pourquoi :

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

$ echo $f
fafafda adffd adfadf adfafd afd

$ echo "$f"
fafafda
adffd
adfadf
adfafd
afd

Sans guillemets, le shell remplace $TEMP avec les caractères qu'il contient (dont l'un est une nouvelle ligne). Puis, avant d'invoquer echo shell divise cette chaîne en plusieurs arguments en utilisant le Internal Field Separator (IFS) et passe la liste d'arguments résultante à echo . Par défaut, le IFS est défini sur des espaces (espaces, tabulations et retours à la ligne), de sorte que le shell coupe votre $TEMP chaîne en arguments et il ne voit jamais la nouvelle ligne, car le shell le considère comme un séparateur, tout comme un espace.


Linux
  1. Comment affecter la sortie d'une commande Linux à une variable

  2. Comment savoir si la sortie d'une commande ou d'un script shell est Stdout ou Stderr ?

  3. Comment utiliser les fonctions du shell de ligne de commande sous Linux

  4. Comment stocker une commande dans une variable dans un script shell ?

  5. Obtenir la première ligne de la sortie d'une commande shell

Comment exécuter des commandes Shell via un serveur HTTP

Comment rediriger la sortie de la commande shell

Comment changer la couleur de sortie de 'Echo' sous Linux

Comment stocker une commande Linux en tant que variable dans un script shell

Comment lire les arguments de ligne de commande dans les scripts shell ?

Ajouter un saut de ligne à la sortie de la commande