A saída do% normal top
não é adequada para exibição em nada além de um terminal. Você deve usar a opção -b
para obter saída de texto simples.
E os caracteres de fim de linha serão retirados (substituídos por espaços) pelo seu shell com o que você está fazendo - não há razão para você armazenar essas saídas em variáveis, você pode simplesmente executar esses comandos quando precisar eles.
Estou assumindo que você está retornando os dados para um navegador da web. Se esse é realmente o caso, você deve fazer uma formatação HTML mínima se quiser ter a chance de exibir a saída corretamente.
Tente algo como:
#! /bin/sh
echo -e "Content-type: text/html\n"
echo "<html><body>"
echo "<h1>top</h1>"
echo "<pre>"
top -b -n 1
echo "</pre>"
echo "<h1>ps</h1>"
echo "<pre>"
ps aux
echo "</pre>"
echo "</body></html>"