input -> for tty in 'w |grep dsi |grep 0.00s | cut -c 10-15'; do echo $tty; done
output -> w |grep dsi |grep 0.00s | cut -c 10-15
So what is this telling you?
It is saying that tty only gets one value, that being the string 'w |grep dsi |grep 0.00s | cut -c 10-15', which it is then echoing.
Seems to have performed its task correctly.
I am guessing your question is why did it not return the values from your commands?
Answer: You have input a string and not a command substitution.
Have a look at MensaWater's solution and your answer lay there on how to correct it.