无法解析函数的输出

无法解析函数的输出

我正在编写一个 Bash 脚本,该脚本应该运行其他守护进程 Bash 脚本,称为 servlet。

我要查询的功能是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
}

什么应该要做的是检查参数是否是用户拥有的正在运行的进程,Online如果是则输出,Offline否则输出。
现在,这个功能似乎可以工作了完美。问题似乎出在我的方式上解析它:

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

奇怪的是,即使 servlet 已启动并正在运行,它也会这样说Failed to start/stop servlet,并且运行一个列出 servlet 的函数会将所有 servlet 列为离线状态,即使它们并未离线。

这是什么问题,我该如何纠正?

答案1

您的代码对于这项基本工作来说太复杂了......

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

相关内容