BASH 연산자 "^", "|" 및 조건 ^(n|N)$의 "$" 의미

BASH 연산자 "^", "|" 및 조건 ^(n|N)$의 "$" 의미

내 스크립트에서 "다시 시도하시겠습니까? [y/N]" 조건을 설정하려고 합니다.

if [[ "$response" =~ ^(n|no)$ ]]; then do something...,

그런데 여기서 사용된 "^"와 "$" 기호의 의미를 이해할 수 없습니다. 간단한 방법을 시도했는데 [[ if $response =~ (n|no) ]]효과가 있었지만 "nein"과 같은 것을 입력하면 여전히 작동합니다... 파이프를 (|)"OR" 연산자로 사용했지만 그것도 잘못되었을 수 있습니다.

이 모든 상황이 무엇을 의미하는지 누군가 나에게 설명해 줄 수 있나요? 작동하지만 의미도 알고 싶습니다. 정말 감사합니다.

답변1

이는 정규식 특수 문자입니다.

^문자열 시작 부분의 앵커입니다(따라서 일치 항목 앞에는 아무 것도 있을 수 없습니다).

$문자열 끝에 있는 앵커입니다(따라서 일치 항목 뒤에는 아무 것도 있을 수 없습니다).

|당신이 의심한 대로 OR입니다

bash 확장 테스트 에 =~오른쪽 문자열이 확장 정규식이며 일치하는 경우 0으로 종료되고 그 밖의 경우에는 1로 종료됩니다.

[[ if $response =~ (n|no) ]]if가 대괄호 밖에 있어야 하기 때문에 결함이 있지만 이것이 질문의 오타라고 가정하면 응답에 n. 앵커 포인트를 시작하고 끝내야 할 수도 있습니다.오직 n아니면 no일치할 것입니다.

관련 정보