测试文件存在仅适用于 1 个文件,如何让它适用于 2 个文件?

测试文件存在仅适用于 1 个文件,如何让它适用于 2 个文件?

如果我有任何一个 xyz.PDF 文件,则此文件有效:

[ -e *.PDF* ] && echo 'yes'

但是,如果我有两个文件,例如

xyz.PDF
abc.PDF

我明白了

$ [ -e *.PDF* ] && echo 'yes'
-bash: [: sometstgg.PDF: binary operator expected

如何解决这个问题并允许 1 个或多个文件?

答案1

set -- *.PDF

[ "$#" -gt 0 ] && [ "$*" != "*.PDF" ] && echo 'yes'

可能有一个更好的解决方案,因为如果*.PDF那里有实际名称的东西,这就会失败。

因为bash我认为这就足够了

shopt -s nullglob
set -- *.PDF

[[ "$#" -gt 0 ]] && echo yes

在 中ksh93,这似乎就足够了:

[ -e *.PDF ] && echo yes

相关内容