架构师的成长之路初片-shell-2(条件测试)

方法三,使用let命令,不会输出运算结果,专用于(创建变量,或者对变量进行自增减

功能一:  let a=1+1   创建变量a

功能二:  对变量进行自增减

常规写法  主流写法

let a=a+1    let a++    变量的自增减,将变量a的值加1

let a=a-1  let a--    变量a1

let a=a+2        let a+=2   变量a2

let a=a-2  let a-=2   变量a2

let a=a*10  let a*=10  变量a乘以10

-----------------------------------------------------------------------------------------------------

方法四:使用bc工具,支持小数运算

echo "1.1+1" | bc    //非交互的方式使用bc工具

echo "10/3" | bc

echo "scale=3;10/3" | bc   //scale可以定义小数点后面的长度

----------------------------------------------------------------

二,条件测试,可以为脚本提供智能判断的功能

使用方式: 1  test  表达式   2  [  表达式  ]

1: 对字符串进行测试

==  判断两边是否相等   !=  判断两边是否不等

[ abc == abc ]   //使用常量判断

echo $?    //检查结果

[ root == $USER ]    //使用变量判断当前用户是不是root

echo $?    //检查结果

-z  判断变量是否为空    ! -z 判断变量是否非空

a=

[ -z $a ]   //判断变量a如果为空则正确

echo $?

a=10

[ ! -z $a ]  //判断变量a如果非空则正确

echo $? 

-----------------------------------------------

2: 逻辑符号

&&  之前指令执行成功才会执行之后指令

||   之前指令执行失败才会执行之后指令

 

[ abc == xyz ] && echo ok

[ abc == abc ] && echo ok

[ abc == xyz ] || echo ok

[ abc == abc ] || echo ok

[ root == $USER ] || exit   //判断如果当前用户不是root,则退出

[ root != $USER ] && exit   //效果同上

例子:

编写脚本,部署网站,如果不是管理员运行脚本则给出提示并退出

 ------------------------------------------------------------------------------------------------

1, 数字的条件测试

-eq等于     

 -ne不等于

 -gt大于  

-ge大于等于 

 -lt 小于     

-le小于等于

[ $a -eq $b ]    //判断两个变量是否相等

[ 0 -eq $UID ]    //也可以通过id号判断是否为管理员

---------------------------------------------------------------

4,文件的条件测试

-e 判断文件是否存在,不关心类型

-f 判断是否存在且必须是普通文件

-d 判断是否存在且必须是目录

-r 判断当前用户对文件是否有读权限

-w判断当前用户对文件是否有写权限

-x 判断当前用户对文件是否有执行权限(目录的话是进入权限)

[  -e  a  ]   当前位置如果有a文件,不关心类型,则测试成功

[  -f  a  ]   当前位置如果有叫a的普通文件,则测试成功

[  -d  a  ]   当前位置如果有叫a的目录,则测试成功

[  -r  a  ]   当前用户如果对a文件有读权限,则测试成功

[  -w  a  ]   当前用户如果对a文件有写权限,则测试成功

[  -x  a  ]   当前用户如果对a文件有执行(目录是进入)权限,则测试成功

例子:

编写脚本,每隔2分钟检查系统登录账户数量,如果超过3人,则发邮件给

管理员

 

chmod +x test01.sh    //写完脚本后赋予x权限

crontab -e  //编写计划任务

*/2 * * * * /opt/test01.sh  //然后在计划任务中定义执行频率是每2分钟一次

然后可以用mail命令检查邮箱

------------------------------------------------------------------

################################################################################

who :可查看有几个用户登录系统(终端)

################################################################################

原文地址:https://www.cnblogs.com/ahaocloud/p/14374646.html