本文介绍了Bash case语句中的正则表达式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在使用以下脚本,该脚本使用case语句查找服务器.

I am using following script, which uses case statement to find the server.

    #!/bin/bash
SERVER=$1;
echo $SERVER | egrep "ws-[0-9]+\.host\.com";
case $SERVER in
ws-[0-9]+\.host\.com) echo "Web Server"
;;
db-[0-9]+\.host\.com) echo "DB server"
;;
bk-[0-9]+\.host\.com) echo "Backup server"
;;
*)echo "Unknown server"
;;
esac

但是它不起作用.正则表达式与egrep一起使用,但不与大小写一起使用.样本O/P

But it is not working. Regex is working with egrep but not with case. sample O/P

./test-back.sh ws-23.host.com
ws-23.host.com
Unknown server

有什么想法吗?

推荐答案

Bash大小写不使用正则表达式,但是仅外壳模式匹配.

Bash case does not use regular expressions, but shell pattern matching only.

因此,应该使用模式ws*.host.com(或ws-+([0-9]).host.com)代替正则表达式ws-[0-9]+\.host\.com,但这看起来有点高级,我从没尝试过:-)

Therefore, instead of regex ws-[0-9]+\.host\.com you should use pattern ws*.host.com (or ws-+([0-9]).host.com, but that looks a bit advanced and I've never tried that :-)

这篇关于Bash case语句中的正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-06 17:32