.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どちらの場合も、スキーマを引用できません。パターンを引用すると、ワイルドカードパターン一致ではなく文字列比較になります。

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

  1. 絶対一致しないリテラル文字列(両側にスペースを含む)を *.awk テストします。
  2. テストを無効にするために使用されます!

おすすめ記事