Pipe
來自管道命令的腳本中的小於運算符
我正在使用 Ubuntu 18.04 並使用
ansible
. 我有一個測試,看看是否有什麼改變。本質上,如果 grepping 後的行數“小於 2”。我可以使用以下管道構造檢索數字:
realm list | grep active-directory | wc -l
如何測試結果是否小於 2?
if [ "$(realm list | grep -c -wF active-directory)" -lt 2 ]; then echo is less than 2 else echo is 2 or more fi
grep
可以數。在這裡,我們使用這個事實來計算包含單詞的行數active-directory
。
-c
選項grep
是什麼使返回匹配的grep
行數。該-F
選項禁用正則表達式匹配,grep
而是使用字元串比較。該
-w
選項是非標準的,但通常實施。它強制給定模式是一個單獨的單詞,這意味著匹配必須在給定字元串的兩側都有非單詞字元(或沒有字元)。非單詞字元是set之外[[:alnum:]_]
的任何字元,即任何不是字母數字或下劃線的字元。如果與 一起使用,這意味著active-directory3
將不匹配,也不匹配。active-directory``-w``grep``inactive-directory
你也可以做
if realm list | awk '/active-directory/ && n++ {exit 1}'; then echo less than 2 else echo 2 or more fi
我們告訴
awk
它一旦找到包含active-directory
. 當我們已經得到答案時,這省去了尋找所有匹配項的麻煩。