如果输出的 grep 在一行中有字符串,则测试是否返回 true

Qua*_*tum 5 shell grep exit

如果服务正在运行,我只想返回 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但除了一条新线路我什么也没得到。

Gra*_*eme 4

service iptables status | grep -qi "not running" && echo "stopped"
Run Code Online (Sandbox Code Playgroud)

您只需替换||&&. shell 脚本的一个令人困惑的事情是 0 为真,任何其他数字为假,这与大多数其他语言相反。这是因为程序通常会返回 0 表示成功。

我还需要在我的发行版输出上添加一个2>&1后状态service到 stderr,但这对你来说似乎不是问题。