当前位置:   article > 正文

shell——if + case条件语句_if语句套用case语句 shell脚本

if语句套用case语句 shell脚本

1. 概述

在shell的各种条件结构和流程控制结构中都要进行各种测试,然后根据测试结果执行不同的操作,有时候也会与 if 等条件语句相结合,来完成测试判断,以减少程序运行错误。

2. 文件测试

文件测试指的是根据给定的路径名称,判断对应的是文件还是目录,或
者判断文件是否存在,是否可读、可写、可执行等

文件测试操作符说明
-d测试是否为目录(Directory)
-e测试目录或者文件是否存在(Exist)
-f测试是否为文件(File)
-L测试是否为链接文件
-b测试是否为设备文件
-c测试是否为字符设备文件
-r测试当前用户是否有权读取
-w测试当前用户是否有权写入
-x测试是否设置有可执行权限
-s测试存在且文件大小为空
-a、&&逻辑与,且
-o 、||逻辑或,或
-n测试是否为非空
-z测试是否为空值
[root@localhost ~]# a=shenjie
[root@localhost ~]# [ -z $a ] && echo y || echo n
n
[root@localhost ~]# [ -n $a ] && echo y || echo n
y
[root@localhost ~]# [ -n ] && echo y || echo n
y
[root@localhost ~]# [ -z ] && echo y || echo n
y
[root@localhost ~]# a=
[root@localhost ~]# [ -n $a ] && echo y || echo n
y
[root@localhost ~]# [ -z $a ] && echo y || echo n
y
[root@localhost ~]# [ -n "$a" ] && echo y || echo n
n

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17

3.整数值比较

整数值比较指的是根据给定的两个整数值,判断第一个数与第二 个数的关系,如是否大于、等于、小于第二个数实际应用非常广泛

参数含义
-eq第一个数等于第二个数
-ne第一个数不等于第二个数
-gt第一个数大于第二个数
-lt第一个数小于第二个数
-le第一个数小于或等于第二个数
-ge第一个数大于或等于第二个数
[root@localhost ~]# [ 3 -eq 6 ] && echo y || echo n
n
[root@localhost ~]# [ 3 -eq 3 ] && echo y || echo n
y
[root@localhost ~]# [ 3 -ne 3 ] && echo y || echo n
n
[root@localhost ~]# [ 3 -lt 3 ] && echo y || echo n
n
[root@localhost ~]# [ 3 -gt 3 ] && echo y || echo n
n
[root@localhost ~]# [ 3 -ge 3 ] && echo y || echo n
y
[root@localhost ~]# [ 3 -le 3 ] && echo y || echo n
y

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

3.条件测试格式

条件测试语句说明
test 测试表达式利用test命令进行条件测试表达式的方法
[ 测试表达式 ]通过[ ]进行条件测试表达式的方法,和test命 令用法相同
[[ 测试表达式 ]]通过[[ ]]进行条件测试表达式的方法,比test和[ ]更新
(( 测试表达式 ))通过(())进行条件测试表达式的方法,一般用于if语句里

注:(())不能用于文件测试,文件测试一般常用的是 []
不分主次,按顺序逐个判断,判断的是前面的结果

4. 逻辑测试

&& 如果前面是正确的,执行
|| 如果前面是错误的,执行
; 挨个儿执行

[root@localhost ~]# test a == b
[root@localhost ~]# echo $?
1
[root@localhost ~]# test a != b
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ a == b ]
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ a != b ]
[root@localhost ~]# echo $?
0
[root@localhost ~]# [ a == b ] && echo y || echo n
n
[root@localhost ~]# [ a != b ] && echo y || echo n
y
[root@localhost ~]# [ a != b ] && echo y 
y
[root@localhost ~]# [ a == b ] && echo y 
[root@localhost ~]# echo $?
1
[root@localhost ~]# [ a == b ];echo y
y
[root@localhost ~]# [ a != b ];echo y
y

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

4. if 条件语句

4.1 单分支

只有在“条件成立”时,才会执行相应的代码

if [条件判断];then
command
fi
 
#或
 
if [条件判断]
then
command
fi
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

4.2 双分支

针对“条件成立”“条件不成立”两种情况,分别执行相应的代码


if 条件判断
  then
      命令
else
   命令
fi
 
#或
if 条件判断;then
    命令
else
    命令
fi

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

4.3 多分支

嵌套使用,进行多次判断

if 条件测试操作 
then
 命令序列 
elif 条件测试操作 
then
 命令序列  
else
 命令序列 
fi 

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

5. case 条件语句

case语句为多选择语句。可以用case语句匹配一个值与一个模式,如果匹配成功,执行相匹配的命令。
case需要一个esac(就是case反过来)作为结束标记,每个case分支用右圆括号,用两个分号表示break,其中“;;”不是跳出循环,是不在去匹配下面的模式

case 变量值 in
模式1)
 命令序列1
;;
模式2)
 命令序列2
;;
……
*)
 默认命令序列
esac

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

例1:输出菜单

#!/bin/bash

read -p "请输入今天星期几": week
case $week in
周一)
	echo "吃水饺";;
周二)
	echo "吃面条";;
周三)
	echo "吃牛排";;
周四)
	echo "吃馒头";;
周五)
	echo "吃烧饼";;
周六)
	echo "吃油条";;
周日)
	echo "吃豆腐脑";;
*)
	echo "输入错误";;
esac
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/976222
推荐阅读
相关标签
  

闽ICP备14008679号