Shell 脚本攻略--条件语句(条件测试、if、case)

前言

我们前面已经学习了编写比较简单的shell脚本:各语句按照顺序依次来执行,从而实现“批量处理”的自动化过程,然而,这样比较“单一”的顺序结构写多了,你会不会觉得简单了点?这样,脚本过于机械化,像流水线一样,不够“智能”!那么,怎样才能从容的应对复杂的系统任务呢?我们接下来去学习如何进行条件测试操作,并通过正确使用if语句,从而使shell脚本具备一定的“判断”能力,从而能根据不同的条件来完成不同的管理任务

一、条件测试—字符串比较

  • 通常用来检查用户输入、系统环境是否满足条件
基本格式:
格式1
[ 字符串1 = 字符串2 ]
[ 字符串1 !=字符串2 ]
格式2
[ -z 字符串 ]
常用的测试操作符 解释
= 第一个字符串与第二个字符串内容相同
!= 第一个字符串与第二个字符串内容不同,!号表示相反的意思
-z 检查字符串内容是否为空,对于未定义或赋予空值的变量将视为空串
[root@localhost ~]# read -p "哑铃是不是柴犬:(yes/no)" chai
哑铃是不是柴犬:(yes/no)yes
[root@localhost ~]# [ $chai = "yes" ] && echo "柴犬哑铃"
柴犬哑铃                      #若输入的'yes'则输出'柴犬哑铃'
[root@localhost ~]# [ $chai != "no" ] && echo "柴犬哑铃"
柴犬哑铃                       #若输入的不是'no'则输出'柴犬哑铃'
[root@localhost ~]# [ -z $chai ] && echo "柴犬哑铃" 
[root@localhost ~]#            #若不成立则不显示任何内容

二、条件测试—逻辑测试

  • 判断两个或多个条件之间的依赖关系
  • 当系统任务取决于多个不同的条件的时候,判断是根据这些条件同时成立还是只要其中一个成立等情况
基本格式:
格式1:[ 表达式1 ] 操作符 [ 表达式2 ] ...
格式2:命令1 操作符 命令2 ...

常用测试操作符:
-a或&&:逻辑与,“而且”的意思,得前后条件都符合
-o或||:逻辑或,“或者” 的意思,二者其中符合一即可
!:逻辑否,只有当指定的条件不成立的时候,结果才成立
“&&”、“||”操作符能够正常存在于“[[]]”条件判断结构中,但是如果出现在“[]”结构中会报错

[root@localhost ~]# a=6								#为变量赋值
[root@localhost ~]# [ $a -ne 2 ] && [ $a -lt 8 ]	  #6不等于2而且6小于8
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ $a -eq 1 ] && [ $a -lt 8 ]	  #6等于1而且6小于8
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ $a -ne 1 -a $a -lt 8 ]           #-a的用法
[root@localhost ~]# echo $?
0
[root@localhost ~]# [[ $a -ne 1 && $a -lt 8 ]]		 #&&的[[]]用法
[root@localhost ~]# echo $?
0
[root@localhost ~]# [[ $a -ne 1 && $a -lt 8 ]] && echo 1111
1111                                         #不等于1且小于8就会输出1111 


三、if语句

1.单分支

##基本格式
if 条件测试操作
    then  命令序列
fi
  • 示例
[root@localhost ~]# vim xjj.sh

#!/bin/bash

xjj="xjj.txt"        ##这里可以先设变量

if [ ! -e $xjj ]        ##若文件不存在,则执行下述命
  • 3
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值