我碰到了一个Nagios检查脚本,这个脚本已经被某个已经离开我公司的人编写了,并且有一个我不明白它正在使用的操作员。 这是有关部分从shell脚本:如何使用=〜操作数?
if [[ "$URL" =~ $ACTIVE ]] && [[ "$URL2" =~ $ACTIVE2 ]]; then
echo "OK: $HOST is ACTIVE in the Load Balancer"
exit 0
我的问题是:
这是什么=~
?
我在互联网上查了一下,发现它是一个“翻转操作数中的位”的按位,但我不明白在哪里以及如何使用它,请您详细说明一下吗?
编辑#1: 这是完整的脚本:
#!/bin/bash
#Purpose: Checks if proxy is active in the LB
#Date: May 09, 2011
#Variables
HOST=$1
URL=`wget --timeout=60 -w 3 -qO- http://$HOST:8080/proxy/keepalive?file=/workspace/temp/1`
URL2=`wget --timeout=60 -w 3 -qO- http://$HOST:8080/proxy/keepalive?file=/workspace/temp/1.txt`
ACTIVE="1"
ACTIVE2="ppp"
LOG="/tmp/PROXY-LB.log"
#Begin Code
if [ -z $HOST ]; then
echo "You must specify IPADDRESS (e.g. 68.67.174.34)"
exit 3
fi
if [[ "$URL" =~ $ACTIVE ]] && [[ "$URL2" =~ $ACTIVE2 ]]; then
echo "OK: $HOST is ACTIVE in the Load Balancer"
exit 0
else
echo "*** Problem: $HOST is out from the Load Balancer"
echo "`date`: *** HOST $HOST is out from the Load Balancer" >> $LOG 2>&1
exit 2
fi
#END
我的问题是,不能编码器使用这个地址(不~
)呢?
if [[ "$URL" = $ACTIVE ]] && [[ "$URL2" = $ACTIVE2 ]]; then
编辑#2: 下面是一些例子我想:
$ d="hello"
$ [[ "$d" =~ *ll* ]] && echo "yes"
$ [[ "$d" =~ he* ]] && echo "yes"
yes
$ [[ "$d" =~ *lo ]] && echo "yes"
$
编辑#3: 好吧,我已经做了一些测试,我相信我现在明白了吧:
$ [[ "$d" =~ he* ]] && echo "yes"
yes
$ [[ "$d" =~ *lo ]] && echo "yes"
$ [[ "$d" =~ h* ]] && echo "yes"
yes
$ [[ "$d" =~ lo$ ]] && echo "yes"
yes
$ [[ "$d" =~ ^he ]] && echo "yes"
yes
$ [[ "$d" =~ [a-z]ll[a-z] ]] && echo "yes"
yes
$
谢谢大家的帮助和信息!
也许这是您的解决方案? http://stackoverflow.com/questions/19441521/bash-regex-operator – cslotty 2014-10-01 09:59:04
我只是很难理解为什么它被特别用在这个脚本中......并且谢谢,这个主题中的信息也很有趣。 – 2014-10-01 10:05:20