Si j'ai le fichier input.txt
contenant:
hello
world
!
Ensuite, l'exécution de la commande bash echo $(cat input.txt)
produira ceci:
hello world !
Pourquoi et comment puis-je le corriger pour afficher exactement ce qui se trouve dans le fichier, comment il se trouve dans le fichier?
command-line
bash
f.ardelian
la source
la source
echo "$(date) something"
supprimer la nouvelle ligne de fin de la sortie de la date, ce qui fait que l'écho affiche la date et "quelque chose" sur la même ligne. Si vous devez stocker un fichier ou une sortie de commande "en l'état", utilisez mapfile (help mapfile
)read -rd ''
ou une boucle de lecture while.Extrait de la page de manuel de bash, section
Command Substitution
:Un peu plus loin, même section:
Voilà pourquoi ça
echo "$(cat /etc/passwd)"
marche.De plus, il faut savoir que la substitution de commandes par les spécifications POSIX supprime les sauts de ligne de fin:
Ainsi, la sortie d'un fichier via
$(cat file.txt)
peut entraîner la perte de sauts de ligne, et cela peut être un problème si l'intégrité du fichier entier est prioritaire.la source
Vous pouvez conserver les retours à la ligne, par exemple en définissant IFS sur vide:
la source