리눅스를 사용할 수 있다사례많은 언어와 마찬가지로 다음과 같습니다.
case ${x} in
one)
echo "1"
;;
two)
echo "2"
;;
esac
그들 중 하나로 같은 일을 할 수 있나요?$x또는$y하지만? 그럼, 이것을 상상해 보세요:
case ( ${x} or ${y} ) in
one)
echo "1"
;;
two)
echo "2"
;;
esac
이는 다음과 같은 경우를 의미합니다.$x또는$y포함하다하나또는둘그 다음에1또는2별도로 인쇄하십시오.
답변1
아니요, 하지만 값과 대소문자를 반복할 수 있습니다.
for v in "$x" "$y"; do
case "$v" in
one) echo "1"; break ;;
two) echo "2"; break ;;
esac
done
1
그러면 or 가 2
첫 번째 $x
일치 항목 으로 인쇄됩니다 $y
. 물론 두 가지가 일치하는 경우 어떻게 할지 결정하는 것은 사용자의 몫입니다.
답변2
$x
가능한 값 과 거기에 무엇이 있을 것인지 알고 있다면 $y
문자열을 작성 "$x$y"
하고 다음과 같은 전역 패턴을 찾을 수 있습니다.
case $x$y in
*one*) echo "1" ;;
*two*) echo "2" ;;
esac
답변3
변수 값에 문자를 사용할 수 없는 경우 해당 문자를 구분 기호로 사용할 수 있습니다. 예를 들어, x 값과 y 값 모두 콜론을 포함할 수 없다고 결정했다고 가정합니다.
case ":${x}:${y}:" in
*:one:*)
echo "1"
;;
*:two:*)
echo "2"
;;
esac
이는 다양한 수의 문자열로 쉽게 확장될 수 있습니다. 그러나 :
테스트 중인 문자열에 나타날 가능성이 없는 문자(여기) 또는 일련의 문자를 찾아야 한다는 점을 기억하십시오 .