GNU/Linux >> Tutoriels Linux >  >> Linux

Lorsque vous configurez IFS pour qu'il se divise sur les retours à la ligne, pourquoi est-il nécessaire d'inclure un retour arrière ?

Parce que, comme le dit le manuel bash concernant la substitution de commande :

Bash effectue l'expansion en exécutant la commande et en remplaçant la substitution de commande par la sortie standard de la commande, toutes les nouvelles lignes de fin étant supprimées.

Donc, en ajoutant \b vous empêchez la suppression de \n .

Une façon plus propre de le faire pourrait être d'utiliser $'' citant, comme ceci :

IFS=$'\n'

Je viens de me rappeler le moyen le plus simple. Testé avec bash sur debian wheezy.

IFS="
"

sans blague :)


C'est un hack à cause de l'utilisation de echo et la substitution de commandes.

prompt> x=$(echo -en "\n")
prompt> echo ${#x}
0
prompt> x=$(echo -en "\n\b")
prompt> echo ${#x}
2

Le $() supprime les retours à la ligne et \b empêche \n d'être une nouvelle ligne de fin tout en étant très peu susceptible d'apparaître dans un texte. IFS=$'\n' est le meilleur moyen de configurer IFS pour qu'il se divise sur les retours à la ligne.


Linux
  1. Quand les guillemets doubles sont-ils nécessaires ?

  2. Pourquoi Printf est-il meilleur qu'Echo ?

  3. Pourquoi la saisie semi-automatique ne fonctionne-t-elle pas lors de la saisie d'un nom de commande après `source` ?

  4. Comment diviser une chaîne avec des guillemets (comme des arguments de commande) dans bash ?

  5. Pourquoi slabtop -o ne renvoie-t-il que les 23 premières lignes lorsque la commande est canalisée ?

Commande Echo sous Linux (avec exemples)

16 exemples de commandes Echo sous Linux

Commande Echo sous Linux avec exemples

commande echo sous Linux :7 exemples pratiques

Pourquoi la commande sudo:bundle est-elle introuvable ?

Pourquoi utiliser echo avant d'installer un nouveau logiciel ?