Bash에서 일치하는 파일이 없는 와일드카드 처리

Bash에서 일치하는 파일이 없는 와일드카드 처리

디렉터리에서 배열로 파일을 읽으려고 하는데 파일이 존재하지 않는데도 배열에 저장되고 있습니다. 파일명이 없으면 제외하고 싶습니다.

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

관련 정보