GNU/Linux >> Belajar Linux >  >> Linux

Bash + Menggunakan Printf Untuk Mencetak Dalam Format Khusus?

Saya baru saja menulis skrip bash berikut untuk memeriksa akses ping pada daftar mesin 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

Ini mencetak:

 (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

Bagaimana saya bisa menggunakan printf (atau perintah lain) di skrip bash saya untuk mencetak format berikut?

 (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

Jawaban yang Diterima:

Menggunakan perluasan parameter untuk mengganti spasi yang dihasilkan dari %-s dengan titik:

#!/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. Array di Bash Tidak Ditemukan

  2. Menggunakan output dari perintah sebelumnya di bash

  3. Saat menggunakan printf bagaimana cara keluar dari karakter khusus dalam skrip shell?

  1. Menggunakan Bash untuk otomatisasi

  2. Ssh – Menggunakan Saluran Ssh yang Sudah Ada?

  3. Bash Seri Pemula #9:Menggunakan Fungsi di Bash

  1. Bash Konversi \xc3\x89 Ke ?

  2. Menggunakan Pernyataan Kasus di Bash

  3. Pisahkan keluaran perintah dengan kolom menggunakan Bash?