Linux CentOS7 条件测试语句和 if 流程控制语句的使用
时间:2020-03-12 13:29 来源:linux.it.net.cn 作者:IT
目录
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 > str2 str1 大于 str2 则为真 [ str1 \> str2 ]
str1 < str2 str1 小于 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:
(责任编辑:IT)
目录
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 > str2 str1 大于 str2 则为真 [ str1 \> str2 ]
str1 < str2 str1 小于 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:
(责任编辑:IT) |