다음 호스트 이름을 bash 정규식과 일치시키는 방법은 무엇입니까?
내 Linux 호스트 이름은 star01, star02, star03, start04입니다.
내 목표는 두 번째 숫자로 문자열 "start0"을 확인하는 것입니다.
나는 다음을 수행합니다.
[[ $hostname =~ star0[:digit:] ]] && echo ok
하지만 이것은 작동하지 않습니다.
hostname=star04
[[ $hostname =~ star0[:digit:] ]] && echo ok
여기서 무슨 문제가 있습니까?
답변1
Posix 문자 클래스는 다음과 같이 지정되어야 합니다 [[:digit:]]
.
[[ $hostname =~ star0[[:digit:]] ]] && echo ok
단순화하는 또 다른 방법은 다음과 같습니다.
[[ $hostname =~ star0[0-9] ]] && echo ok
[:digit:]
는POSIX대괄호 표현식 내에 사용되는 문자 클래스(예[x-z[:digit:]]
: )POSIX문자 클래스 이름은 모두 소문자여야 합니다.