我想檢查一個特定的服務是否通過Linux終端運行,並且下面的命令似乎沒有按預期過濾結果。不知道我做錯了什麼......管道grep給太多的結果
service --status-all | grep subversion
這將產生輸出的幾行,包括,例如,
[ ? ] Networking
我不知道爲什麼發生這種情況,因爲該字符串「顛覆」 不包含在上述線內...
我想檢查一個特定的服務是否通過Linux終端運行,並且下面的命令似乎沒有按預期過濾結果。不知道我做錯了什麼......管道grep給太多的結果
service --status-all | grep subversion
這將產生輸出的幾行,包括,例如,
[ ? ] Networking
我不知道爲什麼發生這種情況,因爲該字符串「顛覆」 不包含在上述線內...
你應該使用:
service --status-all |& grep subversion
因爲沒有一個狀態([ ? ]
)的服務都發送到stderr,這是不是流水線到grep(然後它被印在終端上如何)。
|&
發送標準錯誤到標準輸出,所以grep能夠過濾它。
嘗試這個和重定向stderr(2)到stdout(1):
service --status-all 2>&1 | grep subversion
怎麼樣'服務顛覆狀態; RET = $ ?; echo $ ret'? – Cyrus
謝謝,那肯定會工作,但我仍然想知道爲什麼grep會產生額外的結果... – Andrew