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 – Apa yang Dapat Membuat Linux Tidak Responsif Selama Beberapa Menit Saat Menjelajahi Situs Web Tertentu?
Bagaimana Mengenalinya Disk Yang Sda Dan Disk Sdb Yang Mana?