Eu não entendo o que sua função deve fazer. Como é melhor do que simplesmente correr
for host in host1 host2 host3; do ping -c 1 host >/dev/null && do_stuff; done
Se tudo o que você quer saber é se o host está ativo ou não, e execute um comando se estiver, o acima deve ser suficiente.