方法三,使用let命令,不会输出运算结果,专用于(创建变量,或者对变量进行自增减)
功能一: let a=1+1 创建变量a
功能二: 对变量进行自增减
常规写法 主流写法
let a=a+1 let a++ 变量的自增减,将变量a的值加1
let a=a-1 let a-- 变量a减1
let a=a+2 let a+=2 变量a加2
let a=a-2 let a-=2 变量a减2
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 :可查看有几个用户登录系统(终端)
################################################################################