shell判断---逻辑运算

判断脚本执行两个参数是否为数字,比较大小

在这里插入图片描述

[root@lb01 ~]# vim /server/scripts/1-13.sh 

#!/bin/bash
num1=$1
num2=$2
[ $# -ne 2 ] && {
echo "usage: $0 "
exit
}
expr "$num1" + "$num2" + 1 &>/dev/null
[ $? -ne 0 ] && {
echo "must have two number"
exit
}

[ "$num1" -gt "$num2" ] && echo ">"
[ "$num1" -lt "$num2" ] && echo "<"
[ "$num1" -eq "$num2" ] && echo "="
[ "$num1" -ne "$num2" ] && echo "!="

判断两个参数是否为数值

expr "$num1" + "$num2" + 1 &>/dev/null
[ $? -ne 0 ] && {
echo "must have two number"
exit

expr判断参数是否为数值,是的话运算后返回值为0,如果返回值不是0就代表刚才执行的验证石是否为数值失败,说明刚才执行的参数不是纯数值

逻辑运算


[root@lb01 ~]# [ -d /etc -a -f /etc/host ] && echo "1 chengli" || echo "0 buchengli"
0 buchengli
2020年 01月 13日 星期一 09:43:40 CST
[root@lb01 ~]# [ -d /etc -a -f /etc/hosts ] && echo "1 chengli" || echo "0 buchengli"
1 chengli
[root@lb01 ~]# [ -d /etc -o -f /etc/hosts ] && echo "1 chengli" || echo "0 buchengli"
1 chengli
[root@lb01 ~]# [ -d /etc -o -f /etc/ho ] && echo "1 chengli" || echo "0 buchengli"
1 chengli

判断10-100的数字

[root@lb01 ~]# cat /server/scripts/qq.sh 
#!/bin/bash
num=$1
[[ $num -ge 10 && $num -le 100 ]] && echo $num || echo "不符合条件"
[root@lb01 ~]# sh /server/scripts/qq.sh 222
不符合条件
[root@lb01 ~]# sh /server/scripts/qq.sh 22
22

判断<10 >100的数字

[root@lb01 ~]# cat /server/scripts/qq.sh 
#!/bin/bash
num=$1
[[ $num -lt 10 || $num -gt 100 ]] && echo $num || echo "不符合条件"
2020年 01月 13日 星期一 09:54:10 CST
[root@lb01 ~]# sh /server/scripts/qq.sh 22
不符合条件
2020年 01月 13日 星期一 09:54:18 CST
[root@lb01 ~]# sh /server/scripts/qq.sh 2
2
2020年 01月 13日 星期一 09:54:20 CST
[root@lb01 ~]# sh /server/scripts/qq.sh 222
222
2020年 01月 13日 星期一 09:54:22 CST

在这里插入图片描述

[root@lb01 ~]# [[ 123 =~ ^[a-z]+$ ]] && echo 1 || echo 0
0
[root@lb01 ~]# [[ dddwdw =~ ^[a-z]+$ ]] && echo 1 || echo 0
1

[root@lb01 ~]# [[ 123 =~ ^[0-9]+$ ]] && echo 1 || echo 0
1
[root@lb01 ~]# [[ 12sdf3 =~ [0-9] ]] && echo 1 || echo 0
1

判断是否为数字1或者2

[root@lb01 ~]# cat /server/scripts/www.sh 
#!/bin/bash
s=$1
#[ $s -eq 1 -o $s -eq 2 ] && echo $1 || echo "既不是1也不是2" 
[[ ! "$s" =~ ^[12]$ ]] && {
echo input errpr
exit 1
}
[ "$s" -eq 1 ] && echo 1
[ "$s" -eq 2 ] && echo 2


在这里插入图片描述

补充

交互式变量赋值

[root@lb01 ~]# read -p 'input passwd:' pass
input passwd:123456
2020年 01月 13日 星期一 10:47:28 CST
[root@lb01 ~]# echo $pass
123456

给多个变量赋值

[root@lb01 ~]# read -p 'input passwd:' n1  n2
input passwd:10 20
[root@lb01 ~]# echo $n1
10
[root@lb01 ~]# echo $n2
20
[root@manager ~]# cat  /server/scripts/2.8-1-comp-read.sh
#!/bin/bash
#author: oldboy

read -p "input num1 num2:"  num1 num2

#number
#expr $num1  + $num2 + 1   &>/dev/null 
#[ $? -ne 0 ] && {
[[ "$num1" =~ ^[0-9]+$ && "$num2" =~ ^[0-9]+$ ]] ||  {
echo "Usage:  Must have  two number" 
exit 2
}
#compare 
[ $num1 -gt $num2 ] && echo  "$num1 -gt $num2"
[ $num1 -lt $num2 ] && echo  "$num1 -lt $num2"
[ $num1 -eq $num2 ] && echo  "$num1 -eq $num2"
```



#ctrl + z 让进程去后台挂起 (暂停)
[root@manager ~]# sleep 666 
^Z
[2]+  已停止               sleep 666


#bg 让后台挂起的 继续运行  background  
[root@manager ~]# bg 
[2]+ sleep 666 &
[1]   完成                  sleep 99

#查看后台运行 
jobs 

#应用场景:杀掉 顽固进程 
##执行顽固进程
##ctrl + z 
##kill %1 #数字

条件判断 检查crond服务是否开启

status状态

在这里插入图片描述
ps -ef进程

[root@lb01 ~]# cat /server/scripts/ding.sh 
#!/bin/bash
. /etc/init.d/functions
cnt=`ps -ef|grep crond |grep -v grep |wc -l`
if [ $cnt -ge 1 ]
then
action "running" /bin/true
else
action "failed" /bin/false
fi
发布了15 篇原创文章 · 获赞 0 · 访问量 235

猜你喜欢

转载自blog.csdn.net/weixin_45581487/article/details/103952449
今日推荐