Как лучше всего проверить, имеет ли файл одно из нескольких допустимых расширений? - PullRequest
0 голосов
/ 22 декабря 2018

У меня есть следующий код для проверки, если файл, содержащийся в $ arg, не является одним из нескольких расширений файла.Стремясь узнать, я хочу знать, есть ли более правильный и более компактный способ сделать это.

if ! [[ -f "$arg" && ( $arg = *.mkv || $arg = *.mp4 || $arg = *.mp3 || $arg = *.flac || $arg = *.avi) ]] ; then
    echo -e "\"$arg\" is an invalid directory, filename or file format\n"
fi

1 Ответ

0 голосов
/ 22 декабря 2018

Может быть, обернуть это в функцию?

has_element() {
  local item="$1"
  shift
  local e
  for e; do
    [[ "$e" == "$item" ]] && return 0
  done
  return 1
}

suffix="${arg##*.}"

if has_element "$suffix" mkv mp4 mp3 flac abcdefg hijklmn; then
  echo "$suffix is in one of the extensions"
else
  echo "$suffix is not in one of the extensions"
fi
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...