Pipe

來自管道命令的腳本中的小於運算符

  • May 15, 2020

我正在使用 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. 當我們已經得到答案時,這省去了尋找所有匹配項的麻煩。

引用自:https://unix.stackexchange.com/questions/586673