このパターンと一致する必要が1001-N-Nあり、他のものは無視する必要があります。

このパターンと一致する必要が1001-N-Nあり、他のものは無視する必要があります。

私のホスト名は次のとおりです。

www-foo-1001-1-1.example.com

次の文字列一致を使用してアプリケーションをデプロイする必要があるスクリプトを作成しています。1001-<any digit>-<any digit>

例: スクリプトは、次のホスト名と一致する必要があります。

www-foo-1001-1-49
www-foo-1001-4-37
www-foo-1001-2-12
www-foo-1001-8-4

ホスト名でこのパターンを無視してください。

www-foo-1001-1-2-49
www-foo-1001-1-1-49
www-foo-1001-1
www-foo-1001

このパターンと一致する必要が1001-N-Nあり、他のものは無視する必要があります。

実行の詳細については、完全修飾ホスト名と一致しないエラーを発生させるステータスコードをif then..返したいと思います。exit$?

ベストアンサー1

強く打つ拡張モード内部で有効になっているため、[[ ... ]]次のことができます。

hosts=( www-foo-1001-1-49 www-foo-1001-4-37 www-foo-1001-2-12 www-foo-1001-8-4 www-foo-1001-1-2-49 www-foo-1001-1-1-49 www-foo-1001-1 www-foo-1001 )
pattern='*-1001-+([[:digit:]])-+([[:digit:]])'
for h in "${hosts[@]}"; do
    if [[ $h == $pattern ]]; then
        echo "OK: $h"
    else
        echo "no: $h"
    fi
done
OK: www-foo-1001-1-49
OK: www-foo-1001-4-37
OK: www-foo-1001-2-12
OK: www-foo-1001-8-4
no: www-foo-1001-1-2-49
no: www-foo-1001-1-1-49
no: www-foo-1001-1
no: www-foo-1001

私のパターンは、*-1001-あなたが一致したくないと仮定するところから始まります1100121001

==in の演算子はパターン[[ ... ]]一致演算子です。

右のオペランドはパターン変数ですが引用しない。これにより、変数の値を次のように解釈できます。模様一つでもないひも

おすすめ記事