IT이야기

쉘 스크립트에서 if elif fi 사용

cyworld 2021. 9. 16. 21:37
반응형

쉘 스크립트에서 if elif fi 사용


이 질문에 이미 답이 있습니다.

if쉘에서 여러 테스트 를 수행하는 방법을 잘 모르겠습니다 . 이 스크립트를 작성하는 데 문제가 있습니다.

echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" && "$arg1" != "$arg3" ]
then
    echo "Two of the provided args are equal."
    exit 3
elif [ $arg1 = $arg2 && $arg1 = $arg3 ]
then
    echo "All of the specified args are equal"
    exit 0
else
    echo "All of the specified args are different"
    exit 4
fi

문제는 매번이 오류가 발생한다는 것입니다.

./compare.sh: [: 누락된 `]' 명령을 찾을 수 없습니다.


sh&&쉘 연산자로 해석하고 있습니다. 에 변경 -a의 것을, [의 결합 연산자 :

[ "$arg1" = "$arg2" -a "$arg1" != "$arg3" ]

또한 [인수를 생략하면 혼동 되기 때문에 항상 변수를 인용해야 합니다 .


Josh Lee의 대답은 작동하지만 다음과 같이 더 나은 가독성을 위해 "&&" 연산자를 사용할 수 있습니다.

echo "You have provided the following arguments $arg1 $arg2 $arg3"
if [ "$arg1" = "$arg2" ] && [ "$arg1" != "$arg3" ]
then 
    echo "Two of the provided args are equal."
    exit 3
elif [ $arg1 = $arg2 ] && [ $arg1 = $arg3 ]
then
    echo "All of the specified args are equal"
    exit 0
else
    echo "All of the specified args are different"
    exit 4 
fi

이중괄호 사용...

if [[ expression ]]


귀하의 코드에서 샘플이 있습니다. 이 시도:

echo "*Select Option:*"
echo "1 - script1"
echo "2 - script2"
echo "3 - script3 "
read option
echo "You have selected" $option"."
if [ $option="1" ]
then
    echo "1"
elif [ $option="2" ]
then
    echo "2"
    exit 0
elif [ $option="3" ]
then
    echo "3"
    exit 0
else
    echo "Please try again from given options only."
fi

이것은 작동해야합니다. :)


Change "[" to "[[" and "]" to "]]".


This is working for me,

 # cat checking.sh
 #!/bin/bash
 echo "You have provided the following arguments $arg1 $arg2 $arg3"
 if [ "$arg1" = "$arg2" ] && [ "$arg1" != "$arg3" ]
 then
     echo "Two of the provided args are equal."
     exit 3
 elif [ $arg1 == $arg2 ] && [ $arg1 = $arg3 ]
 then
     echo "All of the specified args are equal"
     exit 0
 else
     echo "All of the specified args are different"
     exit 4
 fi

 # ./checking.sh
 You have provided the following arguments
 All of the specified args are equal

You can add "set -x" in script to troubleshoot the errors,

Thanks.

ReferenceURL : https://stackoverflow.com/questions/2359270/using-if-elif-fi-in-shell-scripts

반응형