"매우 구체적인" 문자열 패턴(공백을 포함한 여러 단어)에 대해 bash의 "case" 문을 사용하는 방법은 무엇입니까?
문제는 매우 특정한 함수의 버전 번호가 포함된 여러 단어로 구성된 문자열을 받았다는 것입니다. 이제 버전 번호가 수시로 변경됩니다. 사례 설명에 점점 더 구체적인 문자열 패턴을 추가하는 대신 clown(또는 "Ubuntu 16.04.? LTS" 또는 "Ubuntu 16.04.* LTS"와 같은 단어가 무엇이든)을 사용하고 싶습니다. 그러나 찾지 못했습니다. 아직 어떤 해결책도 없습니다.
지금까지 사용한 쉘 스크립트를 참조하십시오.
.
.
.
case "${OS}" in
"SUSE Linux Enterprise Server 11 SP4")
echo "SLES11 detected."
;;
"Ubuntu 16.04.3 LTS" | "Ubuntu 16.04.4 LTS" )
echo "UBUNTU16 detected."
;;
"CentOS Linux 7 (Core)")
echo "CENTOS7 detected."
;;
*)
echo "Unknown OS detected. Quitting for safety reasons."
exit -1
;;
.
.
.
답변1
Case 문에서 패턴을 사용할 수 있지만 따옴표로 묶을 수 없으므로 공백을 이스케이프해야 합니다.
case ${OS} in
"SUSE Linux Enterprise Server 11 SP4")
echo "SLES11 detected."
;;
Ubuntu\ 16.04.[3-4]\ LTS)
echo "UBUNTU16 detected."
;;
"CentOS Linux 7 (Core)")
echo "CENTOS7 detected."
;;
*)
echo "Unknown OS detected. Quitting for safety reasons."
exit -1
;;