예를 들어 이것이 내 스크립트인 경우:
if [[ $yesno == "What's going on" ]]; then
'
그렇다면 예를 들어 Ignore , ?
및 ,
를 어떻게 만들 수 있습니까 .
?
따라서 기본적으로 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을 제공하는 기타 시스템에서 작동해야 합니다.