2013-03-25 1 views
4

bash 스크립트에서 물결표 문자를 이스케이프해야합니까?bash escape ~ tilde

나는 \ ~로 탈출하려했지만 도움이되지 않습니다. ~ 문자를 제거하면 아래 코드가 예상대로 작동합니다.

  if ! [[ "$line" =~ ^[0-9a-zA-Z-~]+$ ]]; then 
        echo "skipping .. $line" 
        continue 
      fi 

위의 표현식에 물결표 문자를 어떻게 추가합니까?

답변

8

~ ~을 넣지 마십시오. 정규 표현식을 다음으로 변경하십시오.

if ! [[ "$line" =~ ^[0-9a-zA-Z~-]+$ ]]; then 

으로 변경하시면됩니다.

하이픈이 클래스의 마지막 요소 일 수있는 이유에 대한 자세한 설명은 this post을 참조하십시오.

+0

배쉬는 '~'의 범위를 지정하는 데 사용되기 때문에 처음이나 마지막을 제외하고는 혼란 스럽습니다. –

+1

그것은 단지 'bash'가 아니며, 게시물에 추가 된 링크를 참조하십시오. –

+0

이제 이해가됩니다. 링크 주셔서 감사합니다. – surajz