Puxe o ping
para sua própria função e faça o que quiser com os resultados. No final, retorne um 0 ou 1 dependendo do status internamente na função.
ping_func(){
results=$(ping -c 1 -t 1 google.com &> /dev/null)
return $?
}
until [[ $min_time -lt $time ]] && ping_func; do
let time=SECONDS-start_time
let new_progress=COLUMNS*time/max_time
let diff=new_progress-progress
let progress=new_progress
for((i=0; i<diff; i++)); do
echo -n '#'
done
sleep 1
done
echo
Como alternativa, você pode usar um case/switch
mais elaborado dentro da função se precisar agir de maneira diferente ao obter status diferentes de ping
.
case "$status" in
1) return 0 ## success ;;
0) return 1 ## fail ;;
*) ### do something else ;;
esac