Если вы хотите подтвердить, что *
действительно соответствует цифрам в ws*.host.com
и хотите использовать case
вместо if
, elif
, elif
..., вы можете использовать что-то подобное:
case $SERVER in
ws-[0123456789][0123456789][0123456789].host.com) echo "Web Server" ;;
db-[0123456789][0123456789][0123456789].host.com) echo "DB server" ;;
bk-[0123456789][0123456789][0123456789].host.com) echo "Backup server" ;;
*) echo "Unknown server" ;;
esac
Но это не работает для более чем 999 серверов.
Если бы мне пришлось создать сценарий для этого варианта использования, я, вероятно, написал бы что-то подобное (потому что я люблю регулярные выражения и синтаксис регистра;)):
srv=`expr "$SERVER" : '^\(db\|bk\|ws\)-[0-9]\+\.host\.com$'`
echo -n "$SERVER : "
case $srv in
ws) echo "Web Server" ;;
db) echo "DB server" ;;
bk) echo "Backup server" ;;
*) echo "Unknown server !!!"
esac