Talvez seja melhor ter sua lista de IPs em primeiro lugar e, depois, iterar sobre ela:
mapfile ipaddresses < ip.txt
canary=alive
while [[ "alive" == "$canary" ]]; do
canary=dead
for ip in ${ipaddresses[@]}; do
if ssh ubuntu@$ip "pgrep -f pattern"; then
echo "Process is running on $ip"
canary=alive
sleep 10
continue
else
echo "Process not running on $ip"
fi
done
done
Se você ainda estiver preso em uma versão de bash
abaixo de 4, substitua o comando mapfile
por:
read -r ipaddresses <<< "$( cat ip.txt )"