![Bash에서 일치하는 파일이 없는 와일드카드 처리](https://linux55.com/image/69082/Bash%EC%97%90%EC%84%9C%20%EC%9D%BC%EC%B9%98%ED%95%98%EB%8A%94%20%ED%8C%8C%EC%9D%BC%EC%9D%B4%20%EC%97%86%EB%8A%94%20%EC%99%80%EC%9D%BC%EB%93%9C%EC%B9%B4%EB%93%9C%20%EC%B2%98%EB%A6%AC.png)
디렉터리에서 배열로 파일을 읽으려고 하는데 파일이 존재하지 않는데도 배열에 저장되고 있습니다. 파일명이 없으면 제외하고 싶습니다.
a=(/tmp/nofileexists) && echo ${#a[@]} && echo ${a[@]}
1
/tmp/nofileexists
경로에는 와일드카드 문자가 포함될 수 있습니다.
a=(/tmp/nofileexists*.pdf) && echo ${#a[@]} && echo ${a[@]}
답변1
파일 이름 확장이 실패하면 nullglob
빈 문자열 반환을 사용할 수 있습니다.bash
$ shopt -s nullglob
$ a=(/tmp/nofileexists*.pdf) && echo ${#a[@]} && echo ${a[@]}
0
<blank line>
또는 failglob
오류 보고를 사용하세요.
$ shopt -s failglob
$ a=(/tmp/nofileexists*.pdf) && echo ${#a[@]} && echo ${a[@]}
bash: no match: /tmp/nofileexists*.pdf