私のホスト名は次のとおりです。
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-
あなたが一致したくないと仮定するところから始まります11001
。21001
==
in の演算子はパターン[[ ... ]]
一致演算子です。
右のオペランドはパターン変数ですが引用しない。これにより、変数の値を次のように解釈できます。模様一つでもないひも。