32  printf vs echo

Fecha: 08 de octubre, 2026

En Bash, printf permite imprimir texto en la terminal con un formato específico, parecido a echo, pero con mayor control sobre cómo se muestra la información.

32.1 1. Diferencia entre echo y printf

Con echo:

echo "Hola mundo"

Con printf:

printf "Hola mundo\n"

Ambos producen:

Hola mundo

La diferencia es que echo agrega automáticamente un salto de línea, mientras que printf no lo hace. Por eso utilizamos \n en el segundo ejemplo.

32.2 Componentes de printf

Tomemos esta instrucción:

calificacion=10
printf "Calificación: %.2f\n" "$calificacion"
printf "Calificación: %.2f\n" $calificacion
Elemento Significado
printf Comando para imprimir texto con formato
Calificación: Texto que se mostrará
%.2f Número decimal con dos cifras decimales
\n Salto de línea
"$calificacion" Variable cuyo valor se insertará

32.3 2. Imprimir varias líneas

Con echo -e:

echo -e "Ana\nLuis\nMaría"

Con printf:

printf "Ana\nLuis\nMaría\n"

Ambos muestran:

Ana
Luis
María

32.4 3. Utilizar formatos

Una ventaja de printf es que permite insertar valores dentro de un texto.

nombre="Ana"
edad=20

printf "Nombre: %s, Edad: %d\n" "$nombre" "$edad"

Los especificadores más comunes son:

Símbolo Función
%s Insertar texto
%d Insertar un número entero
%f Insertar un número decimal
%.2f Mostrar un decimal con dos cifras después del punto
\n Salto de línea
\t Tabulación

32.5 4. Una característica muy útil para Bash

Podemos utilizar printf para imprimir varios elementos, uno por línea:

printf '%s\n' Ana Luis María Carlos

Resultado:

Ana
Luis
María
Carlos

Aquí ocurre algo interesante: printf reutiliza automáticamente el formato %s\n para cada argumento.

Con echo -e tendríamos que escribir:

echo -e "Ana\nLuis\nMaría\nCarlos"

32.6 5. ¿Por qué se utiliza printf en scripts?

Porque su comportamiento es más predecible que el de echo, especialmente cuando trabajamos con caracteres especiales, opciones y formatos.

Por ejemplo, para mostrar dos decimales:

printf "%.2f\n" 3.14159

Resultado:

3.14

32.7 Ejemplo: Generar una ficha de estudiante

Objetivo: Crear un script que muestre la información de un estudiante de manera organizada, utilizando printf para controlar el formato.

1. Crear el script

nano estudiante.sh

2. Escribir el código

#!/bin/bash

# Información del estudiante
nombre="Ana"
materia="Matemáticas"
calificacion=9.567
grupo="A"

# Mostrar información con echo
echo "=== INFORMACIÓN DEL ESTUDIANTE ==="
echo "Nombre: $nombre"
echo "Materia: $materia"
echo "Calificación: $calificacion"
echo "Grupo: $grupo"

echo ""

# Mostrar información con printf
printf "=== INFORMACIÓN DEL ESTUDIANTE ===\n"
printf "Nombre: %s\n" "$nombre"
printf "Materia: %s\n" "$materia"
printf "Calificación: %.2f\n" "$calificacion"
printf "Grupo: %s\n" "$grupo"

3. Ejecutar el script

chmod u+x estudiante.sh
./estudiante.sh

32.7.1 4. Comparar los resultados

Con echo
       
=== INFORMACIÓN ===
Nombre: Ana
Materia: Matemáticas
Calificación: 9.567
Grupo: A
       
Con printf
     
=== INFORMACIÓN ===
Nombre: Ana
Materia: Matemáticas
Calificación: 9.57
Grupo: A

La diferencia principal es que printf permite controlar cómo se presenta la información. Por ejemplo, %.2f muestra la calificación con dos decimales.