쉘 스크립트 내용이 이해가 가지 않습니다.

plrmsu의 이미지

shell script 분석을 하고있는데

아래 표시해 놓은 부분이 이해가 되지 않습니다.

=~ 는 정규식을 일반 스트링이랑 비교 할때 사용하는 것으로 알고있는데

중간 중간 , 구분자가 들어가니 이해가 되지 않고 있습니다.

도움 부탁드립니다.

function is_service_enabled {
local xtrace=$(set +o | grep xtrace)
set +o xtrace
local enabled=1
services=$@
for service in ${services}; do
[[ ,${ENABLED_SERVICES}, =~ ,${service}, ]] && enabled=0 --------> 이부분이 어떻게 처리되는지 이해가 되지 않습니다.

.
.
.
생략
done
$xtrace
return $enabled
}

cinsk의 이미지

if [ "x$foo" = "xSOME-VALUE" ]; then
  ...
fi

에서 쓰이는 x와 같은 뜻인 것 같네요.

$ENABLED_SERVICE나 $service의 값이 빈(empty) 경우나 test(1)의 option (예: -f, -n 등)과 같은 문자열이 들어올 경우를 방지하기 위해 붙여놓은 것입니다.

plrmsu의 이미지

감사합니다. 덕분에 이해가 잘 되었습니다.^^