logical.sh
if [[ ( "$COURSE" == "Korean" && "$SCORE" -gt 95 ) || ( "$COURSE" == "English" && "$SCORE" -gt 85 ) ]]; then
RESULT="pass"
fi
싱글 브래킷은 공백이 포함된 문자열을 입력할 때 반드시 큰따옴표로 감싸줘야 합니다. 그렇지 않으면 공백을 기준으로 문자열을 나누기 때문입니다. 변수의 값을 비교할 때 공백이 포함됐는지 확인할 수 없습니다. 따라서 싱글 브래킷을 사용할 때 변수는 반드시 큰따옴표로 감싸줍니다.
반면에 더블 브래킷에서는 큰따옴표로 감싸지 않아도 문자열을 공백 기준으로 나누지 않습니다. 싱글 브래킷은 정규 표현식을 지원하지 않지만, 더블 브래킷은 정규 표현식(regular expression, 특정 규칙을 가진 문자열을 표현하기 위한 형식)을 사용할 수 있습니다. 더블 브래킷에서 정규 표현식을 확인하는 연산자는 =~입니다.
다음 스크립트는 COURSE 변수가 Ko로 시작하면 국어로, En으로 시작하면 영어로 판단하도록 수정한 스크립트입니다. 정규 표현식은 큰따옴표로 묶지 않는다는 점에 유의하길 바랍니다.