本文介绍了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语句中的正则表达式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!