답변:
grep
패턴의 인스턴스를 하나 이상 발견하면 성공을 리턴하고 그렇지 않으면 실패를 리턴합니다. 따라서 else
"does"와 "does not"인쇄를 원할 경우 절을 추가 하거나 if
조건 만 무효화하여 오류를 얻을 수 있습니다. 각각의 예 :
if grep -q "$user2" /etc/passwd; then
echo "User does exist!!"
else
echo "User does not exist!!"
fi
if ! grep -q "$user2" /etc/passwd; then
echo "User does not exist!!"
fi
대안은의 종료 상태를 찾는 것입니다 grep
. 예를 들면 다음과 같습니다.
grep -q "$user2" /etc/passwd
if [[ $? != 0 ]]; then
echo "User does not exist!!"
경우 grep
가 종료됩니다 일치를 찾는데 실패 1
, 그렇게 $?
될 것입니다 1
. 성공 grep
하면 항상 반환 0
됩니다. $? != 0
보다 사용하는 것이 안전합니다 $? == 1
.
if ! grep ...
진술은 효과가 없었다. 따라서 이것은 대안입니다.
당신은 사용할 수 있습니다 그렙 옵션을 "-L / --files-없는 경기" , 파일 문자열을 포함하지 않는 경우 확인하는 :
if [[ $(grep -L "$user2" /etc/passwd) ]]; then
echo "User does not exist!!";
fi