El siguiente fragmento de bash funciona muy bien cuando en realidad hay *.txt Archivos en el directorio.
for txt in *.txt
do
echo "loading data from $txt"
done
Cuando no hay, lo literal *.txt cae en el bucle como $ txt (no es bueno).
¿Cómo cambio este código para que cuando no haya *.txt archivos, el do ... done bloque es omitido?
[ "*.txt" != '*.txt' ] siempre es falso: ambas cadenas están entre comillas, por lo que no se comprueba ninguna coincidencia. Si eliminas las comillas de una ... tiene otros problemas.
files=$(echo *.txt) y entonces: if [ "${files}" != '*.txt' ] ; then.
if [ "*.txt" != '*.txt' ] ; then do loop here ; fi