.AWK 拡張子を確認するための bash スクリプト

.AWK 拡張子を確認するための bash スクリプト
if [ ! $var  = " *.awk " ] ; then 
            echo "$var contains awk file"
            fi

これは私が持っているものですが、それを実行してファイル名を入力すると、.awkawkファイルが含まれていると表示されます

答え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引用符で囲むことはできないことに注意してください。パターンを引用符で囲むと、グロブ パターン マッチではなく、文字列の比較になります。

テストが常に成功するように見える理由は 2 つあります。

  1. おそらく決して一致しないリテラル文字列 *.awk (両側にスペースを含む)に対してテストし、
  2. テストを否定するには を使用します!

関連情報