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 · 访问量 238
私信
关注
标签:shell,num1,判断,sh,echo,逻辑运算,&&,root,lb01 来源: https://blog.csdn.net/weixin_45581487/article/details/103952449