내 스크립트에서 "다시 시도하시겠습니까? [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
일치할 것입니다.