bash-скрипт для проверки наличия расширения .AWK

bash-скрипт для проверки наличия расширения .AWK
if [ ! $var  = " *.awk " ] ; then 
            echo "$var contains awk file"
            fi

это то, что у меня есть, но когда я запускаю его и ввожу имя файла без .awkнего, все равно пишет, что содержит файл awk

решение1

В bash, вы можете выполнить тест глобализации, используя

if [[ $var == *.awk ]]; then
    echo '$var ends with ".awk"'
else
    echo '$var does not end with ".awk"'
fi

Обратите внимание на двойные квадратные скобки и знаки равенства.

bashтакже поддерживает стандартный способ проведения таких тестов:

case $var in
    *.awk) echo '$var ends with ".awk"' ;;
    *)     echo '$var does not end with ".awk"' ;;
esac

Обратите внимание, что в обоих случаях шаблон *.awkне может быть заключен в кавычки. Заключение шаблона в кавычки сделает его сравнением строк, а не сопоставлением шаблона подстановки.

Причина, по которой ваш тест всегда оказывается успешным, двояка:

  1. Вы проверяете буквальную строку  *.awk (включая пробелы с обеих сторон), которая, предположительно, никогда не совпадет, и
  2. Вы отрицаете тест с помощью !.

Связанный контент