我正在尝试将文件从目录读入数组,但即使文件不存在,它也会保存到数组中。如果文件名不存在,我想排除它。
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