script bash para comprobar si se ve la extensión .AWK

script bash para comprobar si se ve la extensión .AWK
if [ ! $var  = " *.awk " ] ; then 
            echo "$var contains awk file"
            fi

esto es lo que tengo pero cuando lo ejecuto y pongo un nombre de archivo sin .awkél todavía dice contiene archivo awk

Respuesta1

En bash, puedes realizar una prueba global usando

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

Tenga en cuenta los corchetes dobles y los signos de igual.

bashtambién admite la forma estándar de realizar dichas pruebas:

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

Tenga en cuenta que en ambos casos el patrón *.awkno puede citarse. Citar el patrón lo convertiría en una comparación de cadenas, no en una coincidencia de patrón global.

La razón por la que su prueba parece tener siempre éxito es doble:

  1. Prueba con la cadena literal  *.awk (incluido un espacio a cada lado) que presumiblemente nunca coincidirá, y
  2. Niegas la prueba con !.

información relacionada