script bash para verificar a extensão .AWK

script bash para verificar a extensão .AWK
if [ ! $var  = " *.awk " ] ; then 
            echo "$var contains awk file"
            fi

isso é o que eu tenho, mas quando eu executo e coloco um nome de arquivo sem .awkele ainda diz que contém arquivo awk

Responder1

Em bash, você pode realizar um teste de globbing usando

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

Observe os colchetes duplos e os sinais de igual.

bashtambém suporta a maneira padrão de fazer esses testes:

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

Observe que em ambos os casos, o padrão *.awknão pode ser citado. Citar o padrão tornaria uma comparação de strings, não uma correspondência de padrão global.

A razão pela qual seu teste parece sempre ter sucesso é dupla:

  1. Você testa a string literal  *.awk (incluindo um espaço em cada lado) que presumivelmente nunca corresponderá, e
  2. Você nega o teste com !.

informação relacionada