/bin/sh 스크립트 - 매개변수가 1인지 2인지 확인하는 방법은 무엇입니까?

/bin/sh 스크립트 - 매개변수가 1인지 2인지 확인하는 방법은 무엇입니까?

수정이 필요한 스크립트를 받았습니다. 중고인데 /bin/sh아마 바꾸지는 않을 것 같아요.

매개변수가 정수(특히 1 또는 2)인지 확인하고 싶습니다.

이 작업을 수행하고 매개변수가 존재하지 않거나 문자열이자 잘못된 정수인 경우를 충족하려면 어떻게 해야 합니까?

답변1

스크립트의 매개변수가 1또는 인지 확인하려면 2간단히 Case 문을 사용하면 됩니다.

아래 코드에서는 다음을 확인하려고 한다고 가정합니다 $1.

case $1 in
    [12])
        # $1 is 1 or 2
        ;;
    *)
        # $1 is not 1 and not 2
esac

두 개의 특정 값에만 관심이 있고 이를 문자열로 쉽게 확인할 수 있으므로 매개변수가 유효한 정수인지 확인할 필요가 없습니다. 쉘 변수의 값은 산술적 맥락에서 사용되지 않는 한 항상 문자열이며 여기에는 그럴 이유가 없습니다.

명시적 선언을 사용할 수도 있습니다 if.

if [ "$1" = '1' ] || [ "$1" = '2' ]; then
    # $1 is 1 or 2
else
    # $1 is not 1 and not 2
fi

답변2

매개변수 값이 정수인지 확인하려면 다음 링크를 확인하세요.

https://stackoverflow.com/questions/2210349/test-whether-string-is-a-valid-integer

변수가 존재하는지 확인하기 위해 변수에 첫 번째 인수를 할당한다고 가정합니다.

var=$1

 if [ ! -z "$var" ]; then
    echo "value is present"
 else
    echo "value is not present"
 fi 

관련 정보