para loop (f in * .txt) gera erro se nenhum arquivo * .txt existir

1

Eu tenho um pequeno script que se parece com isso:

#!/bin/sh
for f in ./*.txt
do
 f=$(basename $f)
 echo "Processing $f"
 scp somewhere
 mv $f done/'basename $f'
done

Isso está funcionando perfeitamente, mas assim que não restarem arquivos, isso gerará esse erro: *.txt: No such file or directory Eu estou querendo saber por que ele entra no loop e como eu posso fazer isso (sem um novo se talvez?)

    
por yellowsir 25.01.2016 / 16:24

1 resposta

1

Se não houver nenhum arquivo *.txt , a string permanecerá não expandida como está e o loop será inserido. Para evitar isso, defina a opção nullglob .

shopt -s nullglob
    
por 25.01.2016 / 16:49