Acho que posso resolver seu problema de maneira bastante simples.
Eu não quero usar funções não incorporadas:
unset i
rm *.txtx
# Now it is sure no matching file is in this dir
while a=(*.txtx) [ ! -e "$a" ]; do
echo loop $i;
[ $((++i)) -eq 5 ] && >a.txtx # Creates a matching file if i == 5
done
ls *.txtx
A saída é:
loop
loop 1
loop 2
loop 3
loop 4
loop 5
a.txtx
Não é suficiente verificar o tamanho da matriz, como se não houvesse nenhum arquivo correspondente ao padrão, em seguida, o tamanho da matriz será 1 contendo o padrão *.txtx
. Mas pode haver um arquivo chamado *.txtx
, então -e
deve ser usado para verificar se o resultado é apenas o próprio padrão ou um arquivo real.
Se mais arquivos correspondentes forem criados no loop, ainda funcionará, pois $a
é o mesmo que ${a[0]}
.
Espero que isso ajude!