수정이 필요한 스크립트를 받았습니다. 중고인데 /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