Teste de existência de arquivo só funciona para exatamente 1 arquivo, como funciona para 2 arquivos? [duplicado]

0

Se eu tiver um único arquivo xyz.PDF, isso funciona:

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

No entanto, se eu tiver dois arquivos, por exemplo,

xyz.PDF
abc.PDF

Eu obtenho

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

Como contornar isso e permitir 1 ou muitos arquivos?

    
por Michael Durrant 24.01.2017 / 19:29

1 resposta

0

set -- *.PDF

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

Provavelmente existe uma solução melhor, pois isso falharia se houvesse algo com o nome real *.PDF .

Para bash , acho que seria suficiente com

shopt -s nullglob
set -- *.PDF

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

Em ksh93 , isso parece ser suficiente:

[ -e *.PDF ] && echo yes
    
por 24.01.2017 / 19:34

Tags