-
Notifications
You must be signed in to change notification settings - Fork 1.8k
SC2144
Stavros Ntentos edited this page Jun 12, 2020
·
9 revisions
if [ -e dir/*.mp3 ]
then
echo "There are mp3 files."
fi
for file in dir/*.mp3
do
if [ -e "$file" ]
then
echo "There are mp3 files"
break
fi
done
[ -e file* ]
only works if there's 0 or 1 matches. If there are multiple, it becomes [ -e file1 file2 ]
, and the test fails.
[[ -e file* ]]
doesn't work at all.
Instead, use a for loop to expand the glob and check each result individually.
If you are looking for the existence of a directory, do:
for f in /path/to/your/files*; do
## Check if the glob gets expanded to existing files.
## If not, f here will be exactly the pattern above
## and the exists test will evaluate to false.
[ -e "$f" ] && echo "files do exist" || echo "files do not exist"
## This is all we needed to know, so we can break after the first iteration
break
done
None.