Возможно ли иметь последовательные операторы or в bash?

#bash #shell

Вопрос:

В настоящее время у меня есть

 if [[ $INPUT_FILE == *".aac" ]] || [[ $INPUT_FILE == *".aiff" ]] || [[ $INPUT_FILE == *".pcm" ]]
 

Я попробовал следующее, которое не работает. Это ничему не соответствует.

 if [[ $INPUT_FILE == *".aac" || *".aiff" || *".pcm" ]]
 

Есть ли какой-либо способ учесть это выражение?

Комментарии:

1. @RenaudPacalet ну, я имею в виду, что это не работает. Я просто пытался дать представление о том, что я искал

2. @RenaudPacalet спасибо за рекомендацию! сделает это

Ответ №1:

С [[ помощью вы могли бы использовать регулярное выражение (в частности, расширенное регулярное выражение)

 if [[ $input_file =~ .(aac|aiff|pcm)$ ]]; then
  : something
fi
 

или extglob

 if [[ $input_file = *.@(aac|aiff|pcm) ]]; then
  : something
fi
 

Или вы можете использовать case заявление

 case $input_file in
 *.aac | *.aiff | *.pcm )
   # anything
 ;;
esac
 

Комментарии:

1. шаблоны «extglob» описаны в разделе 3.5.8.1 Сопоставление шаблонов