예를 들어 이것이 내 스크립트인 경우:
if [[ $yesno == "What's going on" ]]; then
예를 들어, 무시하려면 어떻게 해야 합니까 '
??
,
.
그래서 기본적으로 Whats going on
, What's going on
, What's going on?
는 What's going on.
같은 것 같습니다. 여러 변수를 일치시킬 수 있다는 것을 알고 있지만 || [[ $yesno == ".. ]]
모든 조합을 입력할 수는 없습니다.
답변1
특정 예제만 작동하려면 bash 정규식 일치를 사용할 수 있습니다.
[[ $yesno =~ What\'?s\ going\ on[.?]? ]]
백슬래시를 사용하여 따옴표와 공백을 이스케이프합니다.
답변2
비교하기 전에 변수에서 영숫자 문자를 제외한 모든 문자를 간단히 제거할 수 있습니다.
$ yesno="What's going on?"
$ if [[ ${yesno//[^a-zA-Z0-9\ ]/} == "Whats going on" ]]; then echo "OK";fi
OK
답변3
가장 일반적이고 다양한 방법 중 하나는 문자열을 파이프하여 반환 코드를 grep
확인하는 것입니다 . grep
이 if
명령문은 모든 명령이나 파이프의 종료 코드를 확인할 수 있습니다.
if echo "$yesno" | grep -q "What'*s *going *on[?.]*"; then
이렇게 하면 언급한 문자 외에도 단어 사이에 0개 이상의 공백이 허용됩니다.
이 구성은 OS X, FreeBSD, GNU/Linux 및 POSIX grep을 제공하는 기타 시스템에서 작동해야 합니다.