Где ошибка в проверке заканчивается ли строка подстрокой?

# Сначала получим все правила маршрутизации
rules=$(ip rule show)
# Пройдемся по каждому правилу
while IFS= read -r rule; do
  # Проверим
  if [[ $rule == *$1 ]]; then
    # Извлечем IP-адрес из правила
    ip=$(echo $rule | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+')
    # Извлечем lookup table из правила
    table=$(echo $rule | grep -oE 'lookup [a-zA-Z0-9]+' | awk '{print $2}')
    # Удалим правило
    echo "Deleting rule: from $ip lookup $table"
    sudo ip rule del from $ip lookup $table
  fi
done <<< "$rules"

так

  $rule == *$1*

работает, но означает включение субстроки, а не окончание субстрокой

  $rule == *$1

не работает. Как правильно сделать в этом случае?


Ответы (1 шт):

Автор решения: Ivan

Используйте регулярку:

if [[ $rule =~ .*$1$ ]]; then ...
→ Ссылка