用于检查 .AWK 扩展名的 bash 脚本

用于检查 .AWK 扩展名的 bash 脚本
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. 您用 来否定该测试!

相关内容