Você quer a saída de
who | wc -l
atribuído a w , não aquela string, que é o que você obtém por causa das aspas em torno dela. Você deve usar a substituição de comando $(...) :
w=$(who | wc -l)
echo "There are $w people online at the moment"
(você também pode usar os backquotes, mas não pode aninhá-los facilmente).