2

我有这个

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

它打印“aaaaaaa”

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

所以我需要这样的东西

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

但它不起作用我在语法中遗漏了一些东西

谢谢

4

2 回答 2

8

如果启用 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 %s\n" "${files[@]}"
fi

如果不启用 nullglob,则将files=(file.*)生成一个包含一个元素的数组,即字符串“file.*”

于 2012-10-26T15:01:30.940 回答
2

为什么不使用循环?

for i in file.*; do
   if [[ -e $i ]]; then
      # exists...
   fi
done
于 2012-10-26T10:09:34.260 回答