shell编程与条件语句
Posted waldosia
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了shell编程与条件语句相关的知识,希望对你有一定的参考价值。
一、条件测试
1、test命令
作用:测试表达式是否成立,若成立返回0,否则返回其他数值
格式1: test 条件表达式
格式2: [ 条件表达式 ]
#测试一般用格式2, 中括号两边与条件表达式之间需要至少一个空格进行分隔
2、文件测试与整数测试
(1)、文件测试
格式:[ 操作符 文件或目录 ]
常用的操作符 | 功能 |
---|---|
-d | 测试是否为目录(Directory) |
-e | 测试目录或文件是否存在(Exist) |
-f | 测试是否为文件(File) |
-r | 测试当前用户是否有权限读取(Read) |
-w | 测试当前用户是否有权限写入(Write) |
-x | 测试当前用户是否有权限执行(Excute) |
属性测试补充 | 功能 |
---|---|
-s FILE | 测试是否存在且非空 |
-t fd | 测试fd文件描述符是否在某终端已经打开 |
-N FILE | 测试文件自从上一次被读取之后是否被修改过 |
-0 FILE | 测试当前有效用户是否为文件属主 |
-G FILE | 测试当前有效用户是否为文件属组 |
(2)、整数测试
整数测试格式
格式:[ 整数1 操作符 整数2 ]
常用的整数操作符:
常用的整数操作符 | 功能 | 符号 |
---|---|---|
-eq | 等于 | == |
-ne | 不等于 | != |
-gt | 大于 | > |
-lt | 小于 | < |
-le | 小于等于 | ≤ |
-ge | 大于等于 | ≥ |
3、字符串测试与逻辑测试
(1)、字符串测试
字符串测试格式:
格式1:
[ 字符串1 = 字符串2 ] 或 [ 字符串1 == 字符串2 ]
[ 字符串1 != 字符串2 ]
格式2:
[ -z 字符串 ] #检查字符串是否为空(Zero),对于未定义或赋予空值的变量将视为空串
字符串测试的作用:
-
字符串可用来查看用户输入、系统环境等是否满足条件
- 交互式操作的shell脚本中,用来判断用户输入的位置参数是否符合要求
常用字符串测试选项:
常用字符串测试选项 | 功能 |
---|---|
= | 第一个字符串与第二个字符串相同 |
!= | 第一个字符与第二个字符串不相同,“!”表示取反 |
-z | 字符串内容为空 |
-n | 字符是否存在 |
(2)、逻辑测试
逻辑测试的格式:
常用的逻辑测试操作符:
常用的逻辑测试操作符 | 功能 |
---|---|
-a 或 && | 逻辑与,“而且“的意思,一假全假,全真才真 |
-o 或|| | 逻辑或,”或者“的意思,一真为真,全假才假 |
! | 逻辑否,取反 |
::: hljs-center
三种逻辑测试图解
:::
二、if语句
1、if单分支语句
if单分支语句格式:
格式:
if 条件测试操作
then
命令序列
fi
2、if双分支语句
if双分支语句格式:
格式:
if 条件测试操作
then
命令序列 1
else
命令序列 2
fi
3、 if多分支语句
if多分支语句格式:
格式:
if 条件测试操作 1
then
命令序列 1
elif 条件测试操作 2
then
命令序列 2
...
else
以上条件都为假的命令序列
fi
三、case分支语句
case多分支语句格式:
case 变量值 in
模式 1)
命令序列 1
;;
模式 2)
命令序列 2
;;
* )
默认命令序列
esac
case多分支语句作用:
以上是关于shell编程与条件语句的主要内容,如果未能解决你的问题,请参考以下文章