2016-12-22 3 views
0

1|2|3로 확장한다. 하지만 예상대로 작동하지 않는 것 같습니다. 어떤 제안을 주셔서 감사합니다.

+1

이 부분을 살펴보십시오. http://stackoverflow.com/questions/4687722/dynamic-case-statement-in-bash –

+1

extglob을 통해 해결 가능 : http://stackoverflow.com/a/13254908/1030675 – choroba

답변

0

|은 패턴의 일부가 아니지만 두 패턴을 구분하는 case 문 구문의 일부입니다. 다음은 일 것이다 :

foo=3 
b1=1 
b2=2 
b3=3 

case $foo in 
    $b1|$b2|$b3) echo match ;; 
esac 

| 요구 파서 볼 수 있도록 파라미터 확장 패턴 구분자 역할을 발생하기 전에. |이 매개 변수 확장으로 생성 된 경우 패턴의 일부로 일치하는 리터럴 문자로 처리됩니다.

+0

사례 $ b in + ($ a)) echo in ;; 'shopt -s extglob가 유효하다면 올바르게 동작한다. – sorontar

+0

그래, 나는 @ choroba의 코멘트를 보았을 때 그에 관한 메모를 추가하는 것을 고려했다. 그러나 매개 변수에 막대를 두는 것이 왜 효과가 없었던 지 설명하기로 결정했다. – chepner