私のbashスクリプトで、次の正規表現bashコードを使用してコンピュータ名を識別しますkafka01
。kafka02
kafka03
if [[ $(hostname -s) =~ ^kafka[[:digit:]] ]]
then
/tmp/run.sh
fi
コマンドの例hostname
:
hostname -s
kafka01
/tmp/run.sh
しかし、今私たちは、コンピュータ名がmngkafka01
またはその場合mngkafka02
でもスクリプトを実行しようとしていますmngkafka03
。
だから私たちは次のことをしました。run.sh
マシン名がkafka01
or 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
これはより多くのモードに拡張するのがより簡単で、個人的に読むのにも簡単です。