Bash
無法解析函式的輸出
我正在編寫一個 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 都列為離線,即使它們不是。問題是什麼,我該如何糾正?
您的程式碼對於這項基本工作來說太複雜了……
pgrep -u $USER "$tbnServlet" >/dev/null && echo "Started servlet: $tbnServlet" || echo "Failed to start servlet: $tbnServlet"