Existem 2 problemas com a sua abordagem.
O primeiro é que você não está citando a saída de suas substituições de comando. Quando você faz isso, o shell está digitando palavras na saída no espaço em branco e passando cada palavra como argumentos separados para echo
. echo
, em seguida, exibe todos os seus argumentos em uma única linha.
A correção para isso é para citar suas substituições de comando. Por exemplo:
echo "$(who -H | awk '{ print $0,"\n"}')"
A segunda questão é que você não precisa do echo
(ou awk
). Você está capturando a saída do comando em uma string e, em seguida, ecoando-a de volta sem qualquer manipulação. Assim, o echo
não serve para nada.
Transforme seu mini-script neste:
echo "Uptime: $(uptime)"
who -H
Eu tirei o awk
e ele não estava fazendo nada além de adicionar linhas.
Existem outras maneiras de fazer isso também:
echo -n "Uptime: "
uptime
who -H