2つの異なるホスト名と一致するbash +正規表現

2つの異なるホスト名と一致するbash +正規表現

私のbashスクリプトで、次の正規表現bashコードを使用してコンピュータ名を識別しますkafka01kafka02kafka03

if [[ $(hostname -s) =~ ^kafka[[:digit:]] ]]
then
/tmp/run.sh
fi

コマンドの例hostname:

hostname -s
kafka01

/tmp/run.shしかし、今私たちは、コンピュータ名がmngkafka01またはその場合mngkafka02でもスクリプトを実行しようとしていますmngkafka03

だから私たちは次のことをしました。run.shマシン名がkafka01or etcの場合は、スクリプトを実行する必要がありますmngkafka01

if [[ $(hostname -s) =~ ^[mng]kafka[[:digit:]] ]]
then
/tmp/run.sh
fi

ただし、この一般的な構文は機能しません。

私の正規表現コードにはどのような問題がありますか?

ベストアンサー1

クワジモドすでにあなたに与えられた正規表現が失敗する理由に対する答えです。私は別のアプローチを提案したいと思います。case正規表現の代わりにglobを使用してください。

case $(hostname -s) in
  kafka[0-9]*|mngkafka[0-9]*)
    /tmp/run.sh
esac

これはより多くのモードに拡張するのがより簡単で、個人的に読むのにも簡単です。

おすすめ記事