Вы хотите, чтобы вывод
who | wc -l
был назначен на w
, а не на ту строку, которую вы получаете из-за кавычек вокруг нее. Вы должны использовать подстановку команд $(...)
:
w=$(who | wc -l)
echo "There are $w people online at the moment"
(Вы также можете использовать обратные кавычки, но вы не можете легко вложить их).