if에 조건을 2개 이상 추가할 수 있나요?

if에 조건을 2개 이상 추가할 수 있나요?

if문에 2개 이상의 조건을 넣을 수 있나요?

if  [ "$name" != "$blank" && "$age" == "$blank" ]; then

가능합니까? 그렇지 않다면 어떻게 해야 합니까?

답변1

(POSIX 표준) 구문을 사용하면 [ expression ]다음을 사용할 수 있습니다.

if [ "$name" != "$blank" ] && [ "$age" = "$blank" ]; then
   echo true
fi

그러나 [[ expression ]]구문에서는 다음 두 가지 조건을 사용할 수 있습니다.

if [[ $name != "$blank" && $age == "$blank" ]]; then
   echo true!
fi

[[over의 두 가지 장점 [:

  1. and 에는 토큰화나 전역 확장이 없으므로 많은 인수를 따옴표로 묶을 필요가 없습니다( [[따옴표가 없는 경우 패턴으로 해석되는 and 의 오른쪽은 제외).==!=
  2. [[사용하기 쉽고 오류가 발생할 가능성이 적습니다.

단점 [[: ksh, bash 및 zsh에서만 지원되며 일반 Bourne/POSIX sh에서는 지원되지 않습니다.

[[참조 및 [비교를 위한 나의 좋은 페이지배쉬 FAQ

bash/POSIX 쉘에서 변수를 인용하는 것을 잊어버리는 보안 위험

답변2

언급되지 않은 또 다른 가능성이 있습니다@SepahradSalour-a연산자를 사용하고 있습니다 :

if [ "$name" != "$blank" -a "$age" = "$blank" ]; then

그런데, 모든 변수를 올바르게 인용하세요.각기.

관련 정보