Právě jsem napsal následující bash skript pro kontrolu přístupu ping na seznam počítačů se systémem 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
Toto vytiskne:
 (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
 Jak mohu použít printf (nebo jakýkoli jiný příkaz) v mém bash skriptu, aby bylo možné vytisknout následující formát?
 (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
Přijatá odpověď:
 Použití rozšíření parametrů k nahrazení mezer vyplývajících z %-s po tečkách:
#!/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 – Co může způsobit, že Linux na několik minut přestane reagovat při procházení určitých webových stránek?         
            Jak zjistit, který disk je Sda a který je Sdb disk?