Não é possível analisar a saída de uma função

0

Estou escrevendo um script Bash que deve executar outros scripts Bash daemon, chamados servlets.

A função sobre a qual estou perguntando é getStatus :

getStatus() {
     servletToCheck="$@"
     if [ "$(ps -aux | grep \"$(whoami)\" | grep \"${servletToCheck}\" | grep -v \"grep\" | wc -l)" -eq 0 ]; then
        echo -n "Offline"
     else
        echo -n "Online"
     fi
}

O que deve estar fazendo é verificar se os argumentos são um processo em execução de propriedade do usuário e a saída Online se for, Offline caso contrário.
Agora, esta função parece estar funcionando perfeitamente . O problema parece estar em como estou analisando :

if [ "$(getStatus ${tbnServlet})" == "Online" ]; then
    outSuccess "Started servlet: ${tbnServlet}"
    exit 0
else
    outWarning "Failed to start servlet: ${tbnServlet}"
    exit 3
fi

Estranhamente, mesmo quando o servlet está ativo e em execução, ele diz que Failed to start/stop servlet e a execução de uma função que lista os servlets lista todos eles como off-line, mesmo quando não estão.

Qual é o problema e como posso corrigi-lo?

    
por InitializeSahib 05.12.2016 / 03:55

1 resposta

2

Seu código é muito complexo para este trabalho básico ...

pgrep -u $USER "$tbnServlet" >/dev/null && echo "Started servlet: $tbnServlet" || echo "Failed to start servlet: $tbnServlet"
    
por 05.12.2016 / 04:20