다음 표현식은 if-else if 문을 결합하는 올바른 방법입니까?
if [ $TO_MAJOR -eq 7 ] ; then
if [ $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 ]; then
echo "AE port not supported"
elif [ $TO_MINOR -lt 3 ] ; then
echo "AE port not supported"
fi
fi
도착하다
if [ [ $TO_MAJOR -eq 7 ] -a [ [ $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 ] -o [ $TO_MINOR -lt 3 ] ] ]; then
echo "AE port not supported"
fi
답변1
두 번째 코드에는 괄호가 너무 많습니다. [
예의 동의어입니다 test
. 따라서 원하는 작업을 수행하는 방법에는 두 가지가 있습니다. 하나는 단일 테스트 문에서 모든 작업을 수행하는 것입니다. 이 경우에는 괄호 세트만 사용합니다.
if [ \( $TO_MAJOR -eq 7 -a $TO_MINOR -eq 3 -a $TO_PATCH -lt 2 \) -o $TO_MINOR -lt 3 ]; then
다른 하나는 쉘의 &&
and ||
연산자를 사용하여 여러 테스트 명령을 연결하는 것입니다.
if [ $TO_MAJOR -eq 7 ] && ...
[
그러나 while은 와 동의어 이고 test
선언 [
에서는 의미가 없기 때문에 당신이 가지고 있는 것은 작동하지 않습니다 test
.