![파일 이름 와일드카드 패턴을 일치시킬 때 대체 사용](https://linux55.com/image/13712/%ED%8C%8C%EC%9D%BC%20%EC%9D%B4%EB%A6%84%20%EC%99%80%EC%9D%BC%EB%93%9C%EC%B9%B4%EB%93%9C%20%ED%8C%A8%ED%84%B4%EC%9D%84%20%EC%9D%BC%EC%B9%98%EC%8B%9C%ED%82%AC%20%EB%95%8C%20%EB%8C%80%EC%B2%B4%20%EC%82%AC%EC%9A%A9.png)
if [[ $1 == *.(png|jpg) ]]
이것이 내가 시도한 것이지만 작동하지 않습니다. $1
뭔가를 할 수 있도록 이 파일 이름 접미사 중 하나와 일치하는지 확인해야 합니다 . 나는 무엇을 해야할지 모르겠습니다. 방금 들어갔습니다 bash
. 나는 이 모든 포럼과 다른 포럼을 검색했습니다. 조건문에 적합한 항목을 찾지 못했습니다 if
.
답변1
@(this|that)
일치 this
또는 that
Ksh 스타일 확장 글로브도 Bash에서 지원됩니다. Bash에서는 shopt -s extglob
. Bash 버전 4.1부터 이러한 기능은 기본적으로 내부적으로 활성화됩니다 [[ ]]
.
shopt -s extglob # needed in bash-4.0 or older
if [[ $1 == *.@(jpg|png) ]]; then
echo match
else
echo no match
fi
Zsh에서는 *.(jpg|png)
.
표준 sh에서는 를 사용할 수 있지만 case
전체 패턴을 반복해야 합니다.
case $1 in
*.png|*.jpg) echo match;;
*) echo no match;;
esac
바라보다: