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
두 번째 줄에 가 포함되어 있음을 찾도록 지시합니다 active-directory
. 이렇게 하면 이미 답을 갖고 있을 때 모든 일치 항목을 찾는 수고를 덜 수 있습니다.
답변3
솔루션을 제공해 주신 @ctrl-alt-delor에게 감사드립니다.
test $(realm list | grep active-directory | wc -l) -lt 2 && echo true || echo false
test
표준이다POSIX 유틸리티