2/10(运算、条件测试、if分支、循环)

运算

1.使用expr命令,可以运算并输出结果
expr 1 + 1 //加法,运算符号两边要有空格
expr 2 – 1 //减法
expr 2 '’ 2 //乘法,单引号可以屏蔽特殊符号的功能,本身
是通配符,而不是乘号,屏蔽之后就可以识别为乘号

expr 2 * 2 // \是转义符号,可以屏蔽身后一个特殊符号的功能
expr 4 / 2 //除法
expr 5 % 2 //取余数
a=10
b=20
expr $a + $b
expr $a + 100
expr $a + $a

2. [ ] 运 算 使 用 [ ] 运算 使用 []使(( )) 可以实现相同效果
echo $[2*2]
echo $[2-2]
echo $[2/2]
echo $[2%2]
a=10
b=20
expr $a + $b
echo $[a+b]

3.let不输出任何结果,
主流写法 常规写法
let a++ —> let a=a+1 #变量a+1
let a-- —> let a=a-1 #变量a-1
let a+=10 —> let a=a+10 #变量a+10
let a-=10 —> let a=a-10 #变量a-10
let a*=2 —> let a=a2 #变量a2
let a/=2 —> let a=a/2 #变量a/2
let a%=2 —> let a=a%2 #变量a除以2取余

4.使用bc,可以进行小数计算
echo “10/3” | bc
echo “scale=2;10/3” | bc //scale可以定义结果是小数点后多少位

条件测试

语法格式1,test表达式2,【表达式】

1,对字符串进行测试 [ ]
==两边是否相等,相等时条件测试算成功
!=两边是否不等,不相等时条件测试算成功

test a == a #方式一:test ,使用常量判断,再用echo $?测试结果
test a == b
[ a == a ] #方式二:中括号,使用常量判断,再用echo $?测试结果
[ a == b ]
a=abc
a=xyz
[ $a == $b ] //使用变量判断两个变量的值是否相等
[ $a != $b ] //使用变量判断两个变量的值是否不相等

-z
[ -z $a ] //判断变量是否为空,为空时条件测试算成功
[ ! -z $a ] //判断变量是否非空,非空时条件测试算成功

2.逻辑组合
1)条件 && 指令 条件成功才执行指令
条件 || 指令 条件失败才执行指令

[ root == $USER ] || exit //判断当前用户名是否为root
如果判断失败,则执行exit
[ $USER != root ] && exit //判断当前用户名是否不为root
如果判断成功,则执行exit

1).当多个逻辑符号组合使用时
a && b #a、b任务都成功算成功
a || b #a、b任务有一个成功算成功

touch a b c
ls a && ls b && ls c //结果是都显示
ls a || ls b || ls c //结果是显示a
ls a && ls b || ls c //结果是显示a和b
ls a || ls b && ls c //结果是显示a和c

在这里插入图片描述
[ root != $USER ] && echo “非管理员不能执行该脚本” && exit //之前
的语句可以改进成这个方式

3.数字
-eq 是否相等
-ne 是否不等
-gt 是否大于
-ge 是否大于或等于
-lt 是否小于
-le 是否小于或等于

postfix(邮件服务)

mail -s test root #test是标题
再敲mail命令打开邮件列表课查看邮件,再按回车
删除邮件/var/spool/mail/root #文件清空邮件
在这里插入图片描述
x=$(cat /etc/passwd | wc -l) //将目前用户数量赋值给变量x
[ $x -gt 29 ] && echo “用户数量发生变化,服务器可能被入
侵” | mail -s test root //如果目前用户数量大于29,就
发邮件给管理员,29是之前查看的用户数量
在这里插入图片描述
chmod u+x test01.sh //然后给脚本加x权限
crontab -e //编写计划任务
*/2 * * * * /opt/test01.sh //定义每2分钟执行脚本

4.文件
-e 判断文件是否存在,不关心类型
-f 判断文件是否存在,必须是普通文件
-d 判断文件是否存在,必须是目录
-r 判断当前用户对文件是否有读权限,对root无效
-w 判断当前用户对文件是否有写权限,对root无效
-x 判断当前用户对文件是否有x权限
[ -e abc ] //判断当前目录下的abc是否存在,用echo $?查结果
[ -f /opt/abc ] //判断opt下有没有abc这个普通文件
[ -d /opt/abc ] //判断opt下有没有abc这个目录
mkdir xyz
[ -d /opt/xyz ] //判断opt下有没有xyz这个目录
[ -r /opt/abc ] //判断当前用户对abc是否有读权限
[ -w /opt/abc ] //判断当前用户对abc是否有写权限
[ -x /opt/abc ] //判断当前用户对abc是否有x权限

条件测试总结
== != -z ! -z
&& ||
-eq -ne -gt -ge -lt -le
-e -f -d -r -w -x

if分支

在这里插入图片描述
1.单分支
2.双分支
if 条件测试;then //满足条件的话就执行下面指令
执行指令A //指令可以是一条,也可以是多条
else //否则,不满足条件的话就执行下面指令
执行指令B
fi

ping
ping -c 3 -i 0.2 -W 1 192.168.2.254 # -c 定义ping的次数;-i 定义ping的间隔时间(秒);-W ping失败时多久反馈结果

使用if双分支编写ping脚本
在这里插入图片描述

3.多分支
if 条件测试;then //满足条件的话就执行下面A指令
执行指令A //指令可以是一条,也可以是多条
elif 条件测试;then //满足条件的话就执行下面B指令
执行指令B
elif 条件测试;then //满足条件的话就执行下面C指令
执行指令C
else //否则,不满足条件的话就执行下面指令
执行指令
fi
在这里插入图片描述

循环

for循环(可以定义循环次数)
for 变量名称 in 值1 值2 值3 。。。。 //此处变量名可以自定义,通常习惯
用i,值的多少决定了下面do与done之间的任务执行多少次,每个值之间有空
格,这里是有3个值,所以就循环执行指令3次
do
任务
done
1)循环输出1-13在这里插入图片描述
2)利用for循环添加用户
在这里插入图片描述

3)循环输出1-10的ip
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值