Pregunta ¿Cómo imprimo un texto en bash y lo relleno con espacios de cierto ancho?


Me estoy haciendo eco de algunos textos en un script bash con una variable y quiero rellenar esa variable para que siempre tenga la cantidad adecuada de espacios a la derecha para mantener el resto del texto alineado.

Aquí hay un ejemplo de lo que quiero:

Echoing random number 1080    [ OK ]
Echoing random number 443     [ OK ]
Echoing random number 34842   [ OK ]

El valor numérico sería de longitud variable (probablemente no más de 5 o 6 dígitos).

Sé que printf puede hacer esto y alinear correctamente la variable haciendo lo siguiente:

printf "Echoing random number %5s   [ OK ]" $RAND_NUM

Sin embargo, esto formatearía el texto de esta manera:

Echoing random number  1080   [ OK ]
Echoing random number   443   [ OK ]
Echoing random number 34842   [ OK ]

Y, por supuesto, hacer eco con espacios no funciona:

echo "Echoing random number ${RAND_NUM}   [ OK ]"

Produce esto:

Echoing random number 1080   [ OK ]
Echoing random number 443   [ OK ]
Echoing random number 34842   [ OK ]

¿Hay alguna manera de imprimir el texto como mi primer ejemplo?


32
2018-06-14 14:48


origen


Respuestas:


Utilizar - a la izquierda alinear un campo.

printf "Echoing random number %-5s   [ OK ]" $RAND_NUM

Alternativamente, si está en un sistema Red Hat Linux, hay funciones predefinidas que imprimirán verde OK y rojo FALLÓ mensajes (los que ve durante el arranque):

#!/bin/bash

. /etc/init.d/functions

echo -n "Frobbing widget:"
frob_widget && echo_success || echo_failure
echo

46
2018-06-14 14:57