I have the following simple script to loop through files with specific extensions and generate an XML file with the parsed file names without extensions. However, if any of the extensions does not exist in the directory, it results in *.ext and messes up the results. How do I ensure that it only grabs names of the real files and not something like *.wlens?
P.S. I'm doing the more complex name parsing (sed) because files might contain "." in the name. If there are more efficient ways of doing that, I would appreciate your input.
#!/bin/bash
echo "
<?xml version="1.0" encoding="UTF-8"?>
<Package xmlns="http://soap.sforce.com/2006/04/metadata">
    <types>
    " > retrieve_xmd_build_package.xml
for i in *.{wdash,wcomp,wlens};
do
   
    echo "<members>" >> retrieve_xmd_build_package.xml 
    echo "    " "$i"| sed 's#^\(.*\)\.\(.*\)#\1#'     >> retrieve_xmd_build_package.xml 
    echo "</members>" >> retrieve_xmd_build_package.xml 
done
echo "<name>WaveXMD</name>" >> retrieve_xmd_build_package.xml 
echo "
   </types>
   <version>56.0</version>
</Package>
" >> retrieve_xmd_build_package.xml
Here is the result with an incorrect entry for one of the extensions:
<?xml version=1.0 encoding=UTF-8?>
<Package xmlns=http://soap.sforce.com/2006/04/metadata>
    <types>
    
<members>
     weekday DASH
</members>
<members>
     *
</members>
<members>
     weekday LENS 2
</members>
<members>
     weekday LENS
</members>
<name>WaveXMD</name>
   </types>
   <version>56.0</version>
</Package>