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).