Shell编程 if语句

if语句

if condition
then
	statements(s)
fi

实例1
在这里插入图片描述
在这里插入图片描述

实例2
在这里插入图片描述
在这里插入图片描述

实例3:判断a和b是否相等
在这里插入图片描述实例4
在这里插入图片描述

if elif else 语句

if condition1
then
	statements1
elif condition2
then
	statements2
elif condition3
then 
	statement3
......
else
statement
fi

注: if 和 elif 后边必须加上 then

实例5
在这里插入图片描述

test

test 是 Shell 内置命令,

  • 用来检测某个条件是否成立。
  • 和 if 语句一起使用,并且大部分 if 语句都依赖 test
  • test 命令有很多选项,可以进行数值、字符串和文件三个方面的检测。

Shell test 命令的用法为:

  • test expression
    当 test 判断 expression 成立时,退出状态为0,否则为非0值

  • [ ]
    [ expression ]
    注:[ ]和expression之间的空格必须要有的,否则会语法报错。

test 命令可以判断 三类 条件

  1. 数值比较。
    可以用在数字和变量上
比较 描述
n1 -eq n2 检查n1是否与n2相等
n1 -ge n2 检查n1是否大于或等于n2
n1 -gt n2 检查n1是否大于n2
n1 -le n2 检查n1是否小于或等于n2
n1 -lt n2 检查n1是否小于n2
n1 -ne n2 检查n1是否不等于n2

实例1: 比较变量的值和数字的大小,比较变量的值和变量的值的大小
在这里插入图片描述
test命令中不能使用浮点数
在这里插入图片描述

  1. 字符串比较
比较 说明
str1 = str2 检查str1是否和str2相同
str1 != str2 检查str1是否和str2不同
str1 < str2 检查str1是否比str2小
str1 > str2 检查str1是否比str2大
-n str1 检查str1的长度是否非0
-z str1 检查str1的长度是否为0

注:

  • 如果第一个字符串是第二个字符串的前缀,那么第一个小(比如a小于about)
  • 从字符串的开头比较,按照字母顺序,a比b小(比如about小于ball)
  • 如果第一个字符相同,再比较第二个(比如about小于above)

实例2: 判断当前登录用户是否为root(等于和不等于比较)
在这里插入图片描述 实例3:判断两个字的字符串的大小(大于小于比较)
在这里插入图片描述注: 不转义大于号时,shell会将 > 识别为输出重定向,它会创建hockey文件。因为系统会执行重定向(if后面)的语句,所以退出状态为0,判断条件为真,所以会执行then后面的语句。

实例4: 判断字符串长度是否为0(是否为0比较)
在这里插入图片描述

  1. 文件比较
比较 说明
-d file 检查file是否存在并是一个目录
-e file 检查file是否存在
-f file 检查file是否存在并是一个文件
-r file 检查file是否存在并可读
-s file 检查file是否存在并非空
-w file 检查file是否存在并可写
-x file 检查file是否存在并可执行
-O file 检查file是否存在并属当前用户所有
-G file 检查file是否存在并且默认组与当前用户相同
file1 -nt file2 file2 检查file1是否比file2新
file1 -ot file2 file2 检查file1是否比file2旧

实例1:判断目录是否存在(-d)
在这里插入图片描述
实例2:判断文件是否存在(-e) 可欠套

在这里插入图片描述
实例3:判断文件是否存在并且是一个普通文件(-f)
在这里插入图片描述

实例3:判断文件是否可读(-r)
在这里插入图片描述

实例4: 如果文件是否存在并且非空(-s)
在这里插入图片描述

实例5:如果文件存在且可写为真(-w)
测试此文件 需要切换至普通用户
在这里插入图片描述

实例6:测试文件是否可执行(-x)
在这里插入图片描述

实例7:判断文件是否存在并且属于当前用户所有(-O)
在这里插入图片描述

实例8:判断文件是否存在并且默认组与当前用户的相同(-G)
在这里插入图片描述
实例9:判断文件的创建时间的早晚(新旧)(-nt | -ot )
在这里插入图片描述

复合条件测试

在这里插入图片描述
在这里插入图片描述

if then的高级特性

  • 双尖括号(())
  • 方括号 [[ ]] —>有针对字符串比较高级的特性—>通配功能
    在这里插入图片描述
发布了136 篇原创文章 · 获赞 1 · 访问量 1662

猜你喜欢

转载自blog.csdn.net/qq_45652989/article/details/104363866