3
respostas

O programa roda, mas

#!/bin/bash

if [ ! -d log ]
then
        mkdir log
fi


processos_memoria(){
processos=$(ps -e -o pid --sort -size | head -n 11 | grep [0-9])
for pid in $processos
do
        nome_processo=$(ps -p $pid -o comm=)
        echo -n $(date +%F,%H:%M:%S,) >> log/$nome_processo.log
        tamanho_processo=$(ps -p $pid -o size | grep [0-9])
        echo "$(bc <<< "scale=2;$tamanho_processo/1024") MB" >> log/$nome_processo.log
done
}

processos_memoria
if [ $? -eq 0 ]
then
        echo "Os arquivos foram salvos com sucesso"
else
        echo "Houve um problemao e tanto, parca"
fi

Quando executo o programa, ele diz assim:

processos-memoria.sh: line 14: log/$nome_processo.log: ambiguous redirect
processos-memoria.sh: line 16: log/$nome_processo.log: ambiguous redirect
processos-memoria.sh: line 14: log/$nome_processo.log: ambiguous redirect
processos-memoria.sh: line 16: log/$nome_processo.log: ambiguous redirect
processos-memoria.sh: line 14: log/$nome_processo.log: ambiguous redirect
processos-memoria.sh: line 16: log/$nome_processo.log: ambiguous redirect
Os arquivos foram salvos com sucesso

O programa dá certo, mas tem esses tais de "ambiguous redirect". Por quê?

3 respostas

Oi Righel, estranho, não tive esse tipo de problema e não entendi o por que do erro. Você está usando Ubuntu? Que versão?

Estranho né? Sim, a versão 18.04 Segui as aulas e tudo foi exatamente igual ao video, a não ser este detalhe (que mesmo assim a tarefa foi executada corretamente, só esta mensagem que me aparecia (?) )

É, pelo que pesquisei, não tem um motivo claro de por que essa mensagem aparece. Em tópicos do stackoverflow, alguns usuários comentam sobre colocar aspas em parte do comando, mas isso não explica muita coisa.

De qualquer forma, está funcionando. Correto?