Bash에서 정규식이 실패합니다.

Bash에서 정규식이 실패합니다.

이 정규식이 bash에서 작동하지 않는 이유는 무엇입니까?

 if [[ "$vl" =~ ^ *[{-].* ]]; then

나는 공백 수에 관계없이 일치시키고 싶고, 그 뒤에는 {또는 -그 뒤에 오는 모든 것이 일치하고 싶습니다.

답변1

테스트 구성에 사용되면 공간을 탈출해야 합니다.

if [[ "$vl" =~ ^\ *[{-].* ]]; then

그러나 일반적으로 정규식을 변수에 저장하는 것이 더 나은 방법으로 간주됩니다.

pattern='^ *[{-].*'
if [[ "$vl" =~ $pattern ]]; then

*또한 사용해야 할 공간이 하나 이상 있는지 확인하려는 경우 사용된 대로 0에서 무한 공간까지 일치합니다.+

또한 .*정규식은 전체 줄과 일치할 필요가 없으므로 끝이 필요하지 않습니다.

pattern='^ +[{-]'

관련 정보