检查bash中是否至少存在一个文件



我有这个

if [[ -e file.jpg ]] ;then echo "aaaaaaaaa"; fi

它打印了" aaaaaaa"

,但是如果有file.png或file.png,我想打印

所以我需要这样的东西

if [[ -e file.* ]] ;then echo "aaaaaaaaa"; fi

但是它不起作用,我在语法中缺少某些内容

谢谢

如果启用bash的 nullglob设置,则模式文件。*如果没有这样的文件,将扩展到一个空字符串:

shopt -s nullglob
files=(file.*)
# now check the size of the array
if (( ${#files[@]} == 0 )); then
    echo "no such files"
else
    echo "at least one:"
    printf "aaaaaaaaa %sn" "${files[@]}"
fi

如果您不启用nullglob,则files=(file.*)将导致一个带有一个元素的数组,即字符串"文件。*"

为什么不使用循环?

for i in file.*; do
   if [[ -e $i ]]; then
      # exists...
   fi
done

相关内容

  • 没有找到相关文章

最新更新