FQDNホスト名に小文字のみが含まれていることを確認する方法

FQDNホスト名に小文字のみが含まれていることを確認する方法

マシンのホスト名を確認したいと思います。ルールは次のとおりです。

各ホスト名には小文字のみを使用できます。各ホスト名はFQDNでなければなりません。

これを試してみましょう

hostname=master01.nassa.com
[[ $hostname  =~ ^[a-z.a-z.a-z]+$ ]] && hostname is ok

ただし、ホスト名が有効であっても「Hostname is OK」は印刷されません。

正しい構文は何で、何が間違っていますか?

ベストアンサー1

&&あなたの正規表現はいくつかの点で間違っており、それ以降の部分がありませんecho。ホスト名を検証するために複雑な正規表現を作成するのではなく、反対の操作を実行することを検討できます。

hostname=master01.naSsa.com
[[ $hostname  =~ [A-Z] ]] && echo "hostname is not ok"
hostname is not ok

または

hostname=master01.nassa.com
[[ $hostname  =~ [A-Z] ]] || echo "hostname is ok"
hostname is ok

LC_ALL=C
また、複雑さを避けるために、ロケールをCまたはposixとして定義することをお勧めします。[AZ]がbashの小文字と一致するのはなぜですか?

おすすめ記事