[a-z][0-9]
예를 들어 문자 1개와 숫자 1개의 형태로 가능한 많은 변수를 얻습니다 . 대시에서 테스트할 수 있는 방법이 있나요? 그것은 다음과 같습니다:
myvar=o7
if [ $myvar=o[0-4] ]; then
"do this"
elif [ $myvar=o[5-7] ]; then
"do that"
fi
미리 감사드립니다 :)
답변1
원하는 것을 달성하기 위해 정규식이 필요하지 않습니다.
case $myvar in
o[0-4])
echo 'do this'
;;
o[5-7])
echo 'do that'
;;
*)
echo 'unsupported case'
esac
혹은 좀 더 간략하게 말하면,
case $myvar in
o[0-4]) echo 'do this' ;;
o[5-7]) echo 'do that' ;;
*) echo 'unsupported case'
esac
여기서는 $myvar
주어진 각 케이스 라벨에 대해 값을 차례로 매칭하고, 첫 번째로 일치하는 라벨에 해당하는 코드가 실행됩니다. ;;
태그의 코드를 다음 태그와 분리합니다 . 즉, 마지막 태그는필요 ;;
)이 끝나기 전에 esac
.
각 태그는 정규 표현식이 아닌 와일드카드 패턴 pattern)
또는 형식으로 되어 있습니다 .(pattern)
이 case...esac
구조는 특정 작업을 수행하는 표준적이고 간단한 방법을 제공하며 다음과 같이 작성할 수도 있습니다.
if [[ $myvar == o[0-4] ]]; then
echo 'do this'
elif [[ $myvar == o[5-7] ]]; then
echo 'do that'
else
echo 'unsupported case'
fi
그리고 유사한 껍질 bash
.