shell 脚本 从xml 判断
如下,我又个xml文件,内容如下:[beijing][neme]张三[neme][age]24[age][/beijing][shanghai][neme]李四[neme...
如下,我又个xml文件,内容如下:
[beijing]
[neme]张三[neme]
[age]24[age]
[/beijing]
[shanghai]
[neme]李四[neme]
[age]28[age]
[/shanghai]
......
还有很多
我想判断一下,如果城市为beijing而且name为张三,则要求年龄在20~28之间,这就是正确的,如果有beijing而且name为张三,年龄不再20~28之间,就是有问题的
请教各位,这个应该怎么写呢? 展开
[beijing]
[neme]张三[neme]
[age]24[age]
[/beijing]
[shanghai]
[neme]李四[neme]
[age]28[age]
[/shanghai]
......
还有很多
我想判断一下,如果城市为beijing而且name为张三,则要求年龄在20~28之间,这就是正确的,如果有beijing而且name为张三,年龄不再20~28之间,就是有问题的
请教各位,这个应该怎么写呢? 展开
2个回答
展开全部
#!/bin/sh
city=$1
name=$2
age1=$3
age2=$4
n1=`grep -n $city a.xml |awk -F: 'NR==2{print $1}'`
n2=`grep -n $city a.xml |awk -F: 'NR==1{print $1}'`
na=$((n1-n2))
cat a.xml | grep -A${na} "\[${city}\]" > /tmp/a.log
age=`grep -A1 $name /tmp/a.log | grep -Po "(?<=e\]).*(?=\[a)"`
echo $age
if [[ $age -ge $age1 ]] && [[ $age -le $age2 ]]; then
echo "OK"
else
echo "NG"
fi
rm -rf /tmp/a.log
age1 年龄下限
age2 年龄上限
正确 OK 有问题 NG
不知道是不是你要的效果,抛砖。
展开全部
代码
-bash-4.1$ cat l.sh
#!/bin/bash
name="$2"
age="$3"
case $1 in
beijing)
if [[ $name == "zhangSan" && $age -ge 20 && $age -le 28 ]]
then
echo " beijing right"
else
echo " beijing error"
fi
;;
shanghai)
if [[ $name == "zhangSan" && $age -ge 20 && $age -le 28 ]]
then
echo " beijing right"
else
echo " beijing error"
fi
;;
*)
echo "no match"
;;
esac
-bash-4.1$
执行结果:
sh l.sh beijing zhangSan 19
beijing error
-bash-4.1$ sh l.sh beijing zhangSan 25
beijing right
-bash-4.1$
读取xml文件中的值,可采取python 来生成一个文件 ,尔后传递给l.sh脚本文件.
可做参考.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询