GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Bash + Verwenden von Printf, um in einem speziellen Format zu drucken?

Ich habe gerade das folgende Bash-Skript geschrieben, um den Ping-Zugriff auf die Liste der Linux-Rechner zu überprüfen:

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

Dies druckt:

 (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

Wie kann ich printf verwenden (oder einen anderen Befehl) in meinem Bash-Skript, um das folgende Format zu drucken?

 (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

Akzeptierte Antwort:

Verwenden der Parametererweiterung zum Ersetzen von Leerzeichen, die aus %-s resultieren durch Punkte:

#!/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. Bash \xc3\x89 in É konvertieren?

  2. Verwenden des Linux-Sleep-Befehls in Bash-Skripten

  3. Bash-Anfängerserie Nr. 9:Verwenden von Funktionen in Bash

  4. Verwenden von Case-Anweisungen in Bash

  5. Ausgabe des Befehls nach Spalten mit Bash aufteilen?

Bash printf - So drucken Sie eine Variable in Bash

Bash-printf-Befehl

Verwenden des Bash-printf-Befehls zum Drucken formatierter Ausgaben

Verwenden von Bash Sort zum Sortieren von Dateien wie ein Boss

Bash - So drucken Sie mehrzeilige Zeichenfolgen (mit '\n') mit printf

Jede Unterverzeichnisgröße in einem Listenformat mit einem Zeilenbefehl in Bash anzeigen?