如果服务正在运行,我只想返回 true 或 false。这是我所处的位置,不是第一次尝试或最后一次,而是当前的写作:
service iptables status | grep -qi "not running"
Run Code Online (Sandbox Code Playgroud)
service iptables status当它停止时的 sdtout是iptables: Firewall is not running当我运行我想出的东西在新行上什么都没有,我想这并不意外,因为 0 为真,非 0 为假。所以,我需要测试以确保它有效,但我不确定该怎么做。这是尝试:
service iptables status | grep -qi "not running" || echo "stopped"
Run Code Online (Sandbox Code Playgroud)
所以当服务停止时,我希望看到,stopped但除了一条新线路我什么也没得到。
service iptables status | grep -qi "not running" && echo "stopped"
Run Code Online (Sandbox Code Playgroud)
您只需替换||为&&. shell 脚本的一个令人困惑的事情是 0 为真,任何其他数字为假,这与大多数其他语言相反。这是因为程序通常会返回 0 表示成功。
我还需要在我的发行版输出上添加一个2>&1后状态service到 stderr,但这对你来说似乎不是问题。