linux判断值相等_shell:数值运算、条件测试、if判断

linux判断值相等_shell:数值运算、条件测试、if判断

2023年8月2日发(作者:)

linux判断值相等_shell:数值运算、条件测试、if判断bash-completion包:⽀持tab补齐数值运算:整数运算、⼩数运算⼀、整数运算1、exprexpr A + B,A和B之间要空格,否则直接显⽰A+Bexpr A - Bexpr A * B #乘法需要采⽤转义,避免被作为shell通配符expr A / B:只能屏蔽⼀个字符e.g:[root@shell ~]# a=24[root@shell ~]# echo $a$a[root@shell ~]# echo $a24[root@shell ~]# echo $a$b$a[root@shell ~]# echo $a$b$a$b2、$[]或$(())举例:[root@shell ~]# echo $[10*3]30[root@shell ~]# echo $[10/3]3[root@shell ~]# echo $[10+3]13[root@shell ~]# echo $[10-3]7[root@shell ~]# echo $[10%3]1[root@shell ~]# x=3[root@shell ~]# y=5[root@shell ~]# echo $[x+y]8可以⼀⾏进⾏多个运算[root@shell ~]# x=8[root@shell ~]# echo $[x+8],$[x*8][root@shell ~]# 16,643、let运算 不回显结果[root@shell ~]# x=9[root@shell ~]# let x=x+8[root@shell ~]# echo $x174、特殊⽤法:i=nlet i++ ---->i=n+1let i-- ---->i=n-1let i+=3 --->i=n+3let i-=2 --->i=n-2let i=2 --->i=n2let i/=2 --->i=n/2举例:[root@shell ~]# i=24[root@shell ~]# let i++[root@shell ~]# echo $i25[root@shell ~]# let i+=3[root@shell ~]# echo $i28[root@shell ~]# let i-=1[root@shell ~]# echo $i27[root@shell ~]# let i*=2[root@shell ~]# echo $i54[root@shell ~]# let i/=2[root@shell ~]# echo $i27⼆、⼩数运算scale=n 控制⼩数点位数为n位举例:[root@shell ~]# bcscale=5 #取⼩数点后保留5位24/5.2555 #24除以5.25554.56659 #结果为4.56659bc可做数值⼤⼩⽐较>、=、<=、!=,真为1,假为0举例:[root@shell ~]# echo "1>2" | bc[root@shell ~]# 0[root@shell ~]# echo "2>1" | bc[root@shell ~]# 1[root@shell ~]# A=12.5;B=24.8[root@shell ~]# echo "$A>$B" | bc0bc⾮交互式运算[root@shell ~]# echo 'scale=4;12.34*56.789;5/3' | bc #⼀⾏可以有多个命令,⽤分号;隔开!700.77621.666三、条件测试操作1、字符串⽐较:==(判断两个字符串是否相当)、-z(字符串的值是否为空),-n(字符串的值是否不为空,相当于! -z)举例:判断当前⽤户是否为root当root⽤户执⾏时:[root@shell ~]# [ $USER == "root" ][root@shell ~]# echo $?[root@shell ~]# 0当普通⽤户执⾏时:[kobe@shell ~]$ [ $USER == "root" ][kobe@shell ~]$ echo $?[kobe@shell ~]$ 1且&&,或||⼀⾏中有多个命令,A命令和B命令A;B #执⾏A,执⾏BA&&B #执⾏A,仅当A成功才执⾏BA||B #执⾏A,仅当A失败才执⾏B举例:[ a == a ] && echo "yes" || echo "no"yes[ a == b ] && echo "yes" || echo "no"no[root@shell ~]# [ a == a ][root@shell ~]# echo $?[root@shell ~]# 0[root@shell ~]# [ -z $A ] #判断A变量是否为空[root@shell ~]# echo $? #查看0为真,⾮0为假[root@shell ~]# a="abc" ; b="" #定义变量a的值为abc, b的值为空,注意:""⾥如果有空格也算不为空[root@shell ~]# [ -z "$a" ] && echo "空值" || echo "⾮空值"⾮空值[root@shell ~]# [ -z $b ] && echo "空值" || echo "⾮空值"空值2、整数⽐较(不⽀持⼩数⽐较) -eq(等于)、-ne(不相等)、-gt(⼤于)、-ge(⼤于等于)、-lt(⼩于)、-le(⼩于等于)举例:[root@shell ~]# x=20[root@shell ~]# [ $x -eq 20 ] && echo "相等" || echo "不相等"相等[root@shell ~]# [ $x -eq 30 ] && echo "相等" || echo "不相等"不相等提取当前登录此虚拟机的⽤户数,⽐较是否超过4[root@shell ~]# who | wc -l3 #统计⽤户数为3[root@shell ~]# N=$(who | wc -l) #将统计的值赋给N[root@shell ~]# [ $N --gt 4 ] && echo "超过了" || echo "没超过"没超过也可简化为:[root@shell ~]# [ $(who | wc -l) -gt 4 ] && echo "超过了" || echo "没超过"3、⽂件、⽬录判断-e #判断是否存在(不管是⽂件还是⽬录)-f #判断是否存在⽂件-d #判断是否存在⽬录-r #判断是否有r权限-w #判断是否有w权限-x #判断是否有x权限举例:[root@shell ~]# [ -e "/usr/src" ] && echo 存在 || echo 不存在存在判断对象是否为⽬录 -d,是否不为⽬录 ! -d[root@shell ~]# [ -d "/usr/src/" ] && echo "是⽬录" || echo "不是⽬录"是⽬录[root@shell ~]# [ -d "/etc/fstab" ] && echo "是⽬录" || echo "不是⽬录"不是⽬录[root@shell ~]# [ -d "/home/nooby" ] && echo "是⽬录" || echo "不是⽬录"不是⽬录判断对象是否有-r、-w、-x权限注意:r和w对root⽤户判断⽆效,⽆论是否设置权限,root都可读或写举例:[root@shell ~]# cp /tmp/ #复制⼀个⽂件做测试[root@shell ~]# chmod -r /tmp/ #去掉所有的r权限[root@shell ~]# [ -r "/tmp/" ] && echo "可读" || echo "不可读" #root仍然可读可读切换为普通⽤户时:[kobe@shell ~]$ [ -r "/tmp/" ] && echo "可读" || echo "不可读"不可读普通⽤户只对⾃⼰拥有r权限的对象,-r测试才成⽴[kobe@shell ~]$ ls -l .bashrc-rw-r--r-- 1 kobe kobe 124 09-24 16:44 .bashrc[kobe@shell ~]$ [ -r ".bashrc" ] && echo "可读" || echo "不可读"可读-x权限:取决于⽂件本⾝,root或普通⽤户都适⽤[root@shell ~]# chmod 644 /tmp/ #设置⽆x权限[root@shell ~]# ls -l /tmp/-rw-r--r-- 1 root root 33139 12-11 10:52 /tmp/[root@shell ~]# [ -x "/tmp/" ] && echo "可执⾏" || echo "不可执⾏"不可执⾏[root@shell ~]# chmod +x /tmp/ #添加x权限[root@shell ~]# [ -x "/tmp/" ] && echo "可执⾏" || echo "不可执⾏"可执⾏条件组合应⽤:当前⽤户为root,且位于/root⽬录下[root@shell ~]# [ $USER == "root" ]&&[ $PWD == "/root"][root@shell ~]# [ $? -eq 0 ]&& echo "YES"YES[root@shell ~]# [ ! -d "/xx" ]&& mkdir /xx #判断是否没有⽬录/xx,是就创建[root@shell ~]# mount /dev/cdrom /xx #挂载或[root@shell ~]# [ -d "/xx" ]|| mkdir /xx #判断是否有⽬录/xx,没有就创建[root@shell ~]# mount /dev/cdrom /xx或[root@shell ~]# [ -d "/xx" ]&& mount /dev/cdrom /xx每分钟检测当前计算机登录的⽤户数量若数量⼤于2,则发送邮件报警先写好脚本:#!/bin/bashuser=$(who | wc -l)[ $user -ge 2 ] && mail -s "登陆⽤户过多" root < /root/⽤户报警.txtcrontab -e -u root/1 * bash 脚本名if判断语句1、单分⽀if(仅判断对)if [ 判断 ];then命令fiif [ 判断 ];then成功else失败fi举例:脚本:#!/bin/bashread -p '请输⼊您的IP:' ipping -c2 $ip >&/dev/null #-c2是只ping2个包,-i0.1(缩短发送每个包的间隔时间为0.1秒),-W2(等待反馈是否ping通的超时时间2秒)if [ $? -eq 0 ];thenecho 通了!elseecho 不通!fi2、多分⽀ifif [ 判断1 ];then命令elif [ 判断2 ];then命令... ...else命令fi举例:$RANDOM(随机数)$[RANDOM%10+1] 求余(因为余数不可能⼤于除数)设定随机数的范围1-10,不能⽤%11,因为有可能全部除尽余数为0#!/bin/bashx=$[RANDOM%10+1]read -p "我有个1-10的随机数,你猜:" caiif [ $cai -eq $x ];thenecho 恭喜你,猜对了!exit #必须要有!不然猜对了还会继续猜下去elif [ $cai -gt $x ];thenecho 太⼤了elseecho 太⼩了fi增加概率可以从read开始到最后多复制⼏遍

发布者:admin,转转请注明出处:http://www.yc00.com/news/1690915610a462637.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信