shell 编程:条件测试语句和 if 流程控制语句的使用

目录

1. read 命令

介绍:

实例:

2. 流程控制语句 if

单分支:

双分支:

多分支:

实例:

3. test 测试命令

数值比较:

字符串比较:

文件比较:

实例:

4. 流程控制过程中复杂条件和通配符

三种判断:

通配符:

实例:


1. read 命令

介绍:

从键盘读取变量的值,通常在 shell 脚本中与用户进行交互的场合。该命令可以一次读取多个变量的值,变量和输入的值都需要使用空格隔开。在 read 命令后面,如果没有指定变量名,读取的数据将被自动赋值给特定的变量 REPLY。

实例:

从标准输入读取一行并赋值给变量:

读取多个值:

隐藏输入:

限制输入的时间:

限制输入的长度:

提示符:


2. 流程控制语句 if

单分支:

if 条件
then
    commands
fi

双分支:

if 条件
then
    commands
else
    commands
fi

多分支:

if 条件1
then
    commands
elif 条件2
then
    commands
elif 条件3
then
    commands
......
else
    commands
fi

实例:

判断用户在系统中是否存在,是否存在家目录:


3. test 测试命令

数值比较:

参数说明示例
-eq等于则为真[ "$a" -eq "$b" ]

-ne

不等于则为真[ "$a" -ne "$b" ]
-gt大于则为真[ "$a" -gt "$b" ]
-ge大于等于则为真[ "$a" -ge "$b" ]
-lt小于则为真[ "$a" -lt "$b" ]
-le小于等于则为真

[ "$a" -le "$b" ]

字符串比较:

参数说明示例
==等于则为真[ "$a" == "$b"]
!=不等于则为真[ "$a" != "$b"]
-z 字符串字符串的长度为零则为真[ -z "$a" ]
-n 字符串字符串的长度不为空则为真[ -n "$a" ]
str1 > str2str1 大于 str2 则为真[ str1 \> str2 ]
str1 < str2str1 小于 str2 则为真[ str1 \< str2 ]

文件比较:

参数说明示例
-e 文件名如果文件或目录存在则为真[ -e file ]
-r 文件名如果文件存在且可读则为真[ -r file ]
-w 文件名如果文件存在且可写则为真[ -w file ]
-x 文件名如果文件存在且可执行则为真[ -x file ]
-s 文件名如果文件存在且至少有一个字符则为真[ -s file ]
-d 文件名如果文件存在且为目录则为真[ -d file ]
-f 文件名如果文件存在且为普通文件则为真[ -f file ]
-c 文件名如果文件存在且为字符型文件则为真[ -c file ]
-b 文件名如果文件存在且为块文件则为真[ -b file ]
file1 -nt file2检查 file1 是否比 file2 新[ file1 -nt file2 ]
file1 -ot file2检查 file1 是否比 file2 老[ file1 -ot file2 ]

实例:

比较两个数的大小:

判断用户是不是超级用户:

清空日志:


4. 流程控制过程中复杂条件和通配符

三种判断:

if [ 条件判断1 ] &&(||) [ 条件判断2 ]

if [ 条件判断1 -a(-o) 条件判断2 ]

if [[ 条件判断1 &&(||) 条件判断2 ]]:双 "[]" 对 *、<、> 等符号不需要转义

通配符:

字符含义实例
*匹配 0 或多个字符

a*b,如 aab、ab、axyzb

匹配任意一个字符

a?b,a 与 b 之间只能有一个字符,如 aab、acb

[list]匹配 list 中的任意单一字符a[xyz]b,a 与 b 之间必须只能有一个字符,如 axb、ayb
[!list]匹配除 list 中的任意单一字符a[!0-9]b,a 与 b 之间必须只能有一个字符,如 acb、a-b
[c1-c2]

匹配 c1-c2 中的任意单一字符

a[0-9]b,如 a0b、a9b

{string1,string2,...}匹配 string1 或 string2 或(...)其一字符串

a{qwe,asd,zxc}b,如 aqweb、aasdb

实例:

设置 umask:

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值