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.*" の 1 つの要素を持つ配列になります。

于 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 に答える