次のホスト名をbash正規表現と一致させるには?
私のLinuxホスト名はstar01、star02、star03、start04です。
私の目標は、2番目の数字で文字列 "start0"をチェックすることです。
私は次のことを行います。
[[ $hostname =~ star0[:digit:] ]] && echo ok
しかし、これはうまくいきません。
hostname=star04
[[ $hostname =~ star0[:digit:] ]] && echo ok
ここで何の問題がありますか?
答え1
Posix文字クラスは次のように指定する必要があります[[:digit:]]
。
[[ $hostname =~ star0[[:digit:]] ]] && echo ok
単純化する別の方法は次のとおりです。
[[ $hostname =~ star0[0-9] ]] && echo ok
[:digit:]
はPOSIX角かっこ式内で使用される文字クラス(例[x-z[:digit:]]
:)POSIX文字クラス名はすべて小文字でなければなりません。