case 문을 숫자 범위와 일치시키는 방법은 무엇입니까?
0-50 범위에있을 수있는 열 번호로 스위치 케이스를 실행하고 있습니다. 이제 각 케이스는 개별 열 번호를 지원하며 실패를 관찰합니다.
다음은 코드입니다.
i=10
a=1
b=0.65
if [ "$a" != "$b" ]; then
case $i in
[1]|[2]|[5]) echo "Not OK"; ;;
[9-10]|[12]) echo "may be ok"; ;;
*) echo "no clue - $i"; ;;
esac
fi
이 코드가 출력 될 것으로 예상 may be ok
하지만 no clue - 10
.
Bash case
는 숫자 범위에서 작동하지 않습니다. []
쉘 패턴 용입니다.
예를 들어이 케이스 [1-3]5|6)
는 15 또는 25 또는 35 또는 6에서 작동합니다.
코드는 다음과 같아야합니다.
i=10
a=1
b=0.65
if [ "$a" != "$b" ] ; then
case $i in
1|2|5) echo "Not OK"; ;;
9|10|12) echo "may be ok"; ;;
*) echo "no clue - $i"; ;;
esac;
fi
9에서 10 사이i
가 될 수 있으면 범위와 함께 (대소 문자 대신) 사용해야 합니다.real
if
if
및 [
솔루션
arg=1
if [ "$arg" -lt 5 ]; then
echo 'less than 5'
elif [ "$arg" -lt 15 ]; then
echo 'less than 15'
elif [ "$arg" -eq 17 ] || [ "$arg" -eq 19 ]; then
echo '17 or 19'
else
echo 'neither'
fi
POSIX 7
Bash는 https://stackoverflow.com/a/25482040/895245에서 언급 한대로 POSIX를 따릅니다.
다음은 인용문입니다. http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_01 섹션 "Case Conditional Construct":
조건부 구성 케이스는 여러 패턴 중 첫 번째 패턴에 해당하는 복합 목록을 실행합니다 (패턴 일치 표기법 참조) [...] 동일한 복합 목록을 가진 여러 패턴은 '|'로 구분됩니다. 상징. [...]
케이스 구성의 형식은 다음과 같습니다.
case word in [(] pattern1 ) compound-list ;; [[(] pattern[ | pattern] ... ) compound-list ;;] ... [[(] pattern[ | pattern] ... ) compound-list] esac
그런 다음 http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_13 섹션 "2.13. 패턴 일치 표기법"은 다음과 같이 말합니다.
[여는 대괄호가 XBD RE 대괄호 식에서와 같이 대괄호 식을 도입하는 경우
and extended regular expressions points to section "9.3.5 RE Bracket Expression" which says:
A bracket expression (an expression enclosed in square brackets, "[]" ) is an RE that shall match a specific set of single characters, and may match a specific set of multi-character collating elements, based on the non-empty set of list expressions contained in the bracket expression.
So only individual characters are considered when you do something like:
[9-10]
ReferenceURL : https://stackoverflow.com/questions/25481799/how-to-make-case-statement-match-a-number-range
'developer tip' 카테고리의 다른 글
.html 확장자가없는 S3 정적 페이지 (0) | 2021.01.07 |
---|---|
jsdoc로 콜백을 문서화하는 적절한 방법은 무엇입니까? (0) | 2021.01.07 |
두 문자열의 유사성을 어떻게 측정 할 수 있습니까? (0) | 2021.01.07 |
속성 이름을 기준으로 JavaScript 개체 정렬 (0) | 2021.01.07 |
Spring @Transactional 읽기 전용 전파 (0) | 2021.01.07 |