用於檢查 .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. 您可以使用 否定測試!

相關內容