이 정규식이 bash에서 작동하지 않는 이유는 무엇입니까?
if [[ "$vl" =~ ^ *[{-].* ]]; then
나는 공백 수에 관계없이 일치시키고 싶고, 그 뒤에는 {
또는 -
그 뒤에 오는 모든 것이 일치하고 싶습니다.
답변1
테스트 구성에 사용되면 공간을 탈출해야 합니다.
if [[ "$vl" =~ ^\ *[{-].* ]]; then
그러나 일반적으로 정규식을 변수에 저장하는 것이 더 나은 방법으로 간주됩니다.
pattern='^ *[{-].*'
if [[ "$vl" =~ $pattern ]]; then
*
또한 사용해야 할 공간이 하나 이상 있는지 확인하려는 경우 사용된 대로 0에서 무한 공간까지 일치합니다.+
또한 .*
정규식은 전체 줄과 일치할 필요가 없으므로 끝이 필요하지 않습니다.
pattern='^ +[{-]'