Si tengo el archivo que input.txt
contiene:
hello
world
!
Luego, ejecutar el comando bash echo $(cat input.txt)
generará esto:
hello world !
¿Por qué y cómo puedo arreglarlo para que muestre exactamente lo que está en el archivo y cómo está en el archivo?
command-line
bash
f.ardeliano
fuente
fuente
echo "$(date) something"
eliminar la nueva línea final de la salida de la fecha, haciendo que ese eco muestre la fecha y "algo" en la misma línea. Si necesita almacenar un archivo o salida de comando "tal cual", use mapfile (help mapfile
)read -rd ''
o un ciclo de lectura while.Citado de la página de manual de bash, sección
Command Substitution
:Un poco más allá, misma sección:
Por eso
echo "$(cat /etc/passwd)"
funciona.Además, se debe tener en cuenta que la sustitución de comandos por las especificaciones POSIX elimina las nuevas líneas finales:
Por lo tanto, la salida de un archivo a través de
$(cat file.txt)
puede conducir a la pérdida de nuevas líneas finales, y eso puede ser un problema si la integridad del archivo completo es la prioridad.fuente
Puede conservar las nuevas líneas, por ejemplo, configurando IFS para vaciar:
fuente