파이프라인 명령의 스크립트에 있는 미만 연산자

파이프라인 명령의 스크립트에 있는 미만 연산자

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-wgrepinactive-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 유틸리티

관련 정보