¿Por qué el resultado de esto para y while es diferente?

Tengo un bucle for:

for host in $(cat ./hosts) do echo -e "$host" ssh -o "StrictHostKeyChecking no" $host "uptime" 2>/dev/null echo -e "\n" done 

y un ciclo while que se supone que es exactamente el mismo trabajo que el ciclo de arriba para:

 while read host do echo -e "$host" ssh -o "StrictHostKeyChecking no" $host "uptime" 2>/dev/null echo -e "\n" done <./hosts 

hosts es un file ubicado en el mismo lugar que los scripts que contienen for y while loop y contiene algunos nombres de host de serveres remotos. El bucle for imprime el resultado esperado (para todos los hosts enumerados en el file hosts) pero en el caso de while loop solo imprime el uptime de uptime del primer host y se cierra.

el file hosts contiene un nombre de host por línea.

La pregunta es por qué el comportamiento de estos dos loops es diferente.

Solutions Collecting From Web of "¿Por qué el resultado de esto para y while es diferente?"