Não tenho certeza se é possível criar essa regra de autocompletar para valores de hosts separados por espaço. Mas se você não se importa em usar listas separadas por vírgulas, então:
_myhost () {
local cur prev opts
_get_comp_words_by_ref cur prev
opts='-hosts'
servers='name1 name2 name3'
if [[ ${cur} == -* ]] ; then
COMPREPLY=( $(compgen -W "${opts}" -- ${cur}) )
else
case "${prev}" in
-hosts)
if [[ "$cur" == *,* ]]; then
local realcur prefix
realcur=${cur##*,}
prefix=${cur%,*}
COMPREPLY=( $(compgen -W "${servers}" -P "${prefix}," -- ${realcur}) )
else
COMPREPLY=( $(compgen -W "${servers}" -- ${cur}) )
fi
;;
*)
# do nothing
;;
esac
fi
}
complete -F _myhost myhost