Shell脚本应用(二)

Shell脚本应用(二)条件测试操作使用if条件语句使用if语句编写脚本

条件测试操作

目的:shell 环境会根据执行命令返回后状态值($?)来判断条件是否执行成功(返回值为0 表示成功;返回值为非0 值表示失败或异常)
(一)、文件测试

选项 作用

-d
测试是否为目录(Directory)

-f
测试是否为文件(File)

-e
测试目录或文件是否存在(Exist)

-r
测试当前用户是否有权限读取(Read)

-w
测试当前用户是否有权限写入(Write)

-x
测试当前用户和是否有权限执行(Excute)

通过条件测试操作返回的预定义变量”$?”的状态值,从而判断条件是否成立。

[root@localhost ~]# [ -d /media/cdrom ]   判断/media/cdrom是否是一个目录
[root@localhost ~]# echo $? 查看是否成立
0 返回0表示条件成立
[root@localhost ~]# [ -f /media/cdrom ] 判断/media/cdrom是否是一个文件
[root@localhost ~]# echo $? 查看是否成立
1 返回1表示条件不成立

(二)、逻辑测试
作用:判断两个或多个条件的依赖关系
&&:逻辑与,且的意思;要求所有条件都得满足
||:逻辑或得意思;多个条件只要满足一个即可
! :逻辑否得意思;表示“不”;当指定条件不成立时,测试命令返回值为0

[root@localhost ~]# [ -e /mnt/ ] && echo "YES"     判断/mnt/目录是否存在,如果存在就输出YES
YES
[root@localhost ~]# [ -f /mnt/ ] && echo "YES" || echo "NO" 判断/mnt/是否为文件,是就输出YES,不是就输出NO
NO
[root@localhost ~]# [ ! -d /mnt/ ] && echo "YES" || echo "NO" 判断/mnt/不是目录,是就输出YES,不是就输出NO
NO

(三)、整数值比较

选项 作用

-eq
第一个数等于第二个数(Equal)

-ne
第一个数不等于第二个数(Not Equal)

-gt
第一个数大于第二个数(Greater Than)

-ge
第一个数大于或等于第二个数(Greater or Equal)

-lt
第一个数小于第二个数(Lesser Than)

-le
第一个数小于或等于第二个数(Lesser or Equal)

[root@localhost ~]# aaa=`df | wc -l`   反撇号:提取命令执行后的输出结果
[root@localhost ~]# echo $aaa
10
[root@localhost ~]# [ $aaa -gt 8 ] && echo "YES" || echo "NO" 判断aaa变量是否大于8,成立输出YES,不成立输出NO
YES
[root@localhost ~]# [ $aaa -eq 8 ] && echo "YES" || echo "NO" 判断aaa变量是否等于8,成立输出YES,不成立输出NO
NO

(四)、字符串比较
作用:用来检查用户输入、系统环境等是否满足条件;来判断用户输入的位置参数是否符合要求等
= : 第一个字符串和第二个字符串相同
!= : 第一个字符串和第二个字符串不相同 (! 就是取反)
-z: 用来检查字符串是否为空

[root@localhost ~]# [ $aaa = 10 ] && echo "YES" || echo "NO"  变量aaa等于10,则输出YES;不等于则输出NO
YES
[root@localhost ~]# [ $aaa != 10 ] && echo "YES" || echo "NO" 变量aaa不等于10,则输出YES,等于则输出NO
NO

编写一个简单脚本

[root@localhost ~]# vim fugai.sh
#!/bin/bash
read -p "是否覆盖文件:" AJBN 定义变量AJBN,并输出提示信息
[ $AJBN = yes | && echo "已覆盖" || echo "未覆盖"
##如果输入的提示信息是yes就输出"已覆盖",否则输出"未覆盖"

使用if条件语句

通过if 条件语句,实现流程控制方式;满足某个条件时,返回一个结果,否则去实现其他的结果
(一)、单分支if 语句
条件成立,会执行相应的代码;否则不执行其他任何操作

if   [  条件表达式 ]    (判断,如果条件成立)
then
命令序列 (执行命令序列)
fi (结束判断:条件不成立,不做任何操作)

单分支流程图:
Shell脚本应用(二)
(二)、双分支语句
满足第一个条件做一个命令操作;除第一个条件以外的所有条件,都做第二个命令操作

if
[ 条件表达式 ]
then
命令序列1
else (除以上条件外的)
命令序列2
fi

双分支流程图:
Shell脚本应用(二)
(三)、多分支语句
根据测试结果的成立或不成立进行多次判断

if   条件测试1
then
命令序列1
elif 条件测试2
then
命令序列2
elif 条件测试3
then
命令序列3
elif 条件测试n
then
命令序列n
else
命令序列(n+1)
fi

多分支流程图:
Shell脚本应用(二)

使用if语句编写脚本

(一)单分支if语句应用

[root@localhost ~]# vim 1.sh
#!/bin/bash
aaa=aaa.txt (定义一个变量)
if [ ! -e $aaa ] (判断aaa.txt文件不存在,判断成功后)
then
touch $aaa (当判断成功后,将该文件创建出来)
fi (结束判断:不做任何操作)

Shell脚本应用(二)

[root@localhost ~]# vim 2.sh
#!/bin/bash
read -p "输入要删除文件或目录:" aaa
if [ -e $aaa ] 判断变量aaa文件或目录是否存在,判断成功后
then
rm -rf $aaa 当判断成功后,删除变量aaa
fi 结束判断;不做任何操作

Shell脚本应用(二)(二)、双分支if语句应用

#!/bin/bash
read -p "请输入目标主机IP地址:" dizhi
ping -c 3 -i 0.2 -W 3 $dizhi &> /dev/null
##-c、-i、-W分别表示发送几个测试包、间隔几秒、超时几秒
if [ $? -eq 0 ]
then
echo "Host $dizhi is up"
else
echo "Host $dizhi is down"
fi

Shell脚本应用(二)

[root@localhost ~]# vim 4.sh
#!/bin/bash
systemctl status vsftpd &> /dev/null
if [ $? -eq 0 ]
then
echo "监听地址:$(netstat -anpt | grep vsftpd | awk '{print $4}')"
echo "进程PID号:$(pgrep -x vsftpd)"
else
echo "警告:vsftpd服务不可用"
fi
[root@localhost ~]# yum -y install vsftpd
[root@localhost ~]# systemctl start vsftpd
[root@localhost ~]# sh 4.sh
监听地址::::21
进程PID号:58347
[root@localhost ~]# systemctl stop vsftpd
[root@localhost ~]# sh 4.sh
警告:vsftpd服务不可用

Shell脚本应用(二)
(三)、多分支if语句应用

#!/bin/bash
read -p "请输入你的分数(0-100):" aaa 交换赋值
if [ $aaa -ge 85 ] && [ $aaa -le 100 ] 数值大于85或等于,小于100或等于
then
echo "$aaa 分,优秀!"
elif [ $aaa -ge 70 ] && [ $aaa -le 84 ] 数值大于70或等于,大于84或等于
then
echo "$aaa 分,良好"
elif [ $aaa -ge 60 ] && [ $aaa -le 69 ] 数值大于60或等于,小于69或等于
then
echo "$aaa 分,及格"
elif [ $aaa -le 59 ] 数值小于59或等于
then
echo "$aaa 分,不及格"
else
echo "请输入0-100之间的分数" 当以上条件都不满足时,输出这个
fi

Shell脚本应用(二)

原创:https://www.panoramacn.com
源码网提供WordPress源码,帝国CMS源码discuz源码,微信小程序,小说源码,杰奇源码,thinkphp源码,ecshop模板源码,微擎模板源码,dede源码,织梦源码等。

专业搭建小说网站,小说程序,杰奇系列,微信小说系列,app系列小说

Shell脚本应用(二)

免责声明,若由于商用引起版权纠纷,一切责任均由使用者承担。

您必须遵守我们的协议,如果您下载了该资源行为将被视为对《免责声明》全部内容的认可-> 联系客服 投诉资源
www.panoramacn.com资源全部来自互联网收集,仅供用于学习和交流,请勿用于商业用途。如有侵权、不妥之处,请联系站长并出示版权证明以便删除。 敬请谅解! 侵权删帖/违法举报/投稿等事物联系邮箱:2640602276@qq.com
未经允许不得转载:书荒源码源码网每日更新网站源码模板! » Shell脚本应用(二)
关注我们小说电影免费看
关注我们,获取更多的全网素材资源,有趣有料!
120000+人已关注
分享到:
赞(0) 打赏

评论抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

您的打赏就是我分享的动力!

支付宝扫一扫打赏

微信扫一扫打赏