Ubuntu 18.04を使用していますansible
。デフォルトでは、grepの後の行数が「2個未満」の場合です。
次のパイプ構造を使用して番号を取得できます。
realm list | grep active-directory | wc -l
結果が2より小さいかどうかをテストする方法は?
答え1
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
オプションは非標準ですが、通常は実装されています。与えられたパターンが単一の単語になるように強制します。言い換えれば、一致は、与えられた文字列の両側に単語以外の文字があるかどうかを意味します。単語以外の文字はすべての文字です。外部コレクション内のすべて[[:alnum:]_]
、つまり英数字やアンダースコアではないすべて。つまり、 と組み合わせて使用すると一致しactive-directory3
ません。active-directory
-w
grep
inactive-directory
答え2
また、これを行うことができます
if realm list | awk '/active-directory/ && n++ {exit 1}'; then
echo less than 2
else
echo 2 or more
fi
awk
2行目にが含まれていることを見つけるように指示しますactive-directory
。これにより、すでに答えを持っているときにすべての一致を見つけるのに苦労することがなくなります。
答え3
ソリューションを提供してくれた@ctrl-alt-delorに感謝します。
test $(realm list | grep active-directory | wc -l) -lt 2 && echo true || echo false
test
標準であるPOSIXユーティリティ