请解释为什么最后一个"回声"声明是空白的?我希望它在while循环中增加到值1:
#!/bin/bash
OUTPUT="name1 ip ip status" # normally output of another command with multi line output
if [ -z "$OUTPUT" ]
then
echo "Status WARN: No messages from SMcli"
exit $STATE_WARNING
else
echo "$OUTPUT"|while read NAME IP1 IP2 STATUS
do
if [ "$STATUS" != "Optimal" ]
then
echo "CRIT: $NAME - $STATUS"
echo $((++XCODE))
else
echo "OK: $NAME - $STATUS"
fi
done
fi
echo $XCODE
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下语句而不是++ XCODE方法
XCODE=`expr $XCODE + 1`
Run Code Online (Sandbox Code Playgroud)
它也不会在while语句之外打印.我想我在这里缺少一些关于变量范围的东西,但是ol'手册页并没有显示给我.
我想找到一种方法来执行SQL查询,该查询将计算存储在数据库中的子网掩码的cidr(位表示).例如,我有255.255.255.0或其十进制值(4294967040)存储在数据库中.我想通过查询进行选择并返回/ 24表示.
我做了以下的事情来确定子网的最后一个IP,所以我希望做类似的事情来确定一个掩码的cidr表示.
select concat(inet_ntoa(ip_addr),'-',
inet_ntoa(ip_addr+(POWER(2,32)-ip_mask-1))) range
from subnets
order by ip_addr
Run Code Online (Sandbox Code Playgroud)
最好这是一个可以在mysql,postgres,oracle等下工作的SQL语句.
假设一个表包含以下列:
pri_id,item_id,comment,date
我想要的是一个SQL查询,它将删除任何记录,对于item_id比特定日期更早的特定记录,但只要有超过15行的记录item_id.
这将用于清除项目超过1年的评论记录,但我仍希望在任何给定时间保留至少15条记录.这样,如果我有一个评论10年,它将永远不会被删除,但如果我在过去5天有100条评论,我只保留最新的15条记录.这些当然是本例的任意记录计数和日期时间范围.
我想找到一种非常通用的方法,可以在mysql,oracle,postgres等中使用.我正在使用phps adodb库进行数据库抽象,所以如果可能的话,我希望它可以很好地工作.
我确信这个很容易,但我尝试了很多变化,但仍然无法满足我的需要.事情太贪婪了,我不能让它停止贪婪.
鉴于案文:
test=this=that=more text follows
Run Code Online (Sandbox Code Playgroud)
我想选择:
test=
Run Code Online (Sandbox Code Playgroud)
我试过以下正则表达式
(\S+)=(\S.*)
(\S+)?=
[^=]{1}
...
Run Code Online (Sandbox Code Playgroud)
谢谢大家.