GNU/Linux >> Tutoriales Linux >  >> Linux

Bash + ¿Usando Printf para imprimir en formato especial?

Acabo de escribir el siguiente script bash para verificar el acceso de ping en la lista de máquinas Linux:

for M in $list
 do
   ping -q -c 1  "$M" >/dev/null 
          if [[ $? -eq 0 ]]
   then
    echo "($C) $MACHINE CONNECTION OK"
   else
    echo "($C) $MACHINE CONNECTION FAIL"
   fi

   let C=$C+1
done

Esto imprime:

 (1) linux643 CONNECTION OK
 (2) linux72 CONNECTION OK
 (3) linux862 CONNECTION OK
 (4) linux12 CONNECTION OK
 (5) linux88 CONNECTION OK
 (6) Unix_machinetru64 CONNECTION OK

¿Cómo puedo usar printf (o cualquier otro comando) en mi script bash para imprimir el siguiente formato?

 (1) linux643 ............ CONNECTION OK
 (2) linux72 ............. CONNECTION OK
 (3) linux862 ............ CONNECTION OK
 (4) linux12 ............. CONNECTION OK
 (5) linux88 ............. CONNECTION FAIL
 (6) Unix_machinetru64 ... CONNECTION OK

Respuesta aceptada:

Uso de la expansión de parámetros para reemplazar espacios resultantes de %-s por puntos:

#!/bin/bash
list=(localhost google.com nowhere)
C=1
for M in "${list[@]}"
do
    machine_indented=$(printf '%-20s' "$M")
    machine_indented=${machine_indented// /.}

    if ping -q -c 1  "$M" &>/dev/null ;  then
        printf "(%2d) %s CONNECTION OK\n" "$C" "$machine_indented"
    else
        printf "(%2d) %s CONNECTION FAIL\n" "$C" "$machine_indented"
    fi
    ((C=C+1))
done

Linux
  1. Usando Bash para la automatización

  2. Bash Beginner Series #9:Uso de funciones en Bash

  3. ¿Dividir la salida del comando por columnas usando Bash?

  4. Usando la salida de comandos anteriores en bash

  5. usando random para generar una cadena aleatoria en bash

Bash printf - Cómo imprimir una variable en Bash

Comando Bash printf

Uso del comando Bash printf para imprimir salidas formateadas

Usando Bash Sort para ordenar archivos como un jefe

¿Cómo escribir un entero en un archivo binario usando Bash?

Mientras usa printf, ¿cómo escapar de los caracteres especiales en el script de shell?