2013-09-16 1 views
8

나는 bash에서 다음과 같은 조건 표현을 사용하지 않기를 바란다. 어떻게해야합니까? 나는 위의 표현에 직접적으로 논리를 앞에 추가 할 수있는 방법Bash의 복잡한 조건식에서 논리 not 연산자를 사용하는 방법?

if [[ $var==2 || $var==30 || $var==50 ]] ; then 
    do something 
fi 

는,이 같은 일에 다시 변경하는 것은 매우 지루한입니다 : 어떤 힌트를

if [[ $var!=2 && $var!=30 && $var==50 ]] ; then 
    do something 
fi 

감사합니다!

답변

17
if ! [[ $var == 2 || $var == 30 || $var == 50 ]] ; then 
    do something 
fi 

또는 :

if [[ ! ($var == 2 || $var == 30 || $var == 50) ]] ; then 
    do something 
fi 

그리고 좋은 연습은 조건부 연산자와 피연산자 사이에 공백을하는 것입니다. 그것은 칭찬이 아니다 또는 $var 때로는 될 수 있다면주의가 부여하는 것이지만

if ! [[ var -eq 2 || var -eq 30 || var -eq 50 ]] ; then 
    do something 
fi 

if ! ((var == 2 || var == 30 || var == 50)) ; then 
    do something 
fi 

:

일부는 그냥 숫자를 비교하는 경우, 대신 산술 연산자를 사용하거나 (())를 사용하는 것이 좋습니다 수 숫자가 아니거나 값이 없거나 설정되지 않은 경우 변수의 이름 인 경우 기본값이 0이거나 다른 변수의 다른 값을 의미 할 수 있습니다.