shell 3. 条件测试和判断语句
2022-09-04 本文已影响0人
JunChen
一、条件测试
$? 等于0 表示前一个命令测试成功,等于1表示测试失败
字符串测试
# 第一种写法
test expression
# 第二种写法 expression前后一定要有空格
[ expression ]
数据

1. 判断字符串是否不为空,0表示不为空,1表示为空。

2. 判断字符串是否为空,0表示为空,1表示不为空。

3. 判断两个字符串是否相等,0表示相等,1表示不相等。

4. 判断两个字符串是否不相等,0表示不相等,1表示相等。

5. 常用的字符串判断


整数测试
# 第一种写法
test number1 option number2
# 第二种写法
[ number1 option number2 ]
optiion
运算符 | 说明 |
---|---|
-eq |
等于 |
-ne |
不相等 |
-gt |
大于 |
-ge |
大于等于 |
lt |
小于 |
le |
小于等于 |
实例

文件测试
# 第一种写法
test option file
# 第二种写法
[ option file ]
option
操作符 | 说明 |
---|---|
-a file |
文件是否存在,如果存在,如果是测试成功 |
-b file |
文件是否存在,且为块文件,如果是测试成功 |
-c file |
文件是否存在,且为字符文件,如果是测试成功 |
-d file |
文件是否存在,且为目录,如果是测试成功 |
-s file |
文件是否为非空文件,如果是测试成功 |
-f file |
文件是否存在,且为常规文件,如果是测试成功 |
-w file |
文件是否存在,且为可写文件,如果是测试成功 |
-r file |
文件是否存在,且为可读文件,如果是测试成功 |
-x file |
文件是否存在,且为可执行文件,如果是测试成功 |
实例

连接多个条件测试语句的符号
操作符 | 说明 |
---|---|
! |
not |
-a |
and |
-o |
or |
实例

更加直观 &&
和 ||
符号的使用

二、判断语句
if语句
if expression1
then
code...
elif expression2
then
code...
elif expression3
then
code...
else
code...
fi
可以使用exit语句来退出
实例
#! /bin/zsh
echo "Please enter a number"
read num
if [ "${num}" -eq 10 ];then
echo "输入的数字等于10"
elif [ "${num}" -gt 10 ];then
echo "输入的数字大于10"
elif [ "${num}" -lt 10 ];then
echo "输入的数字小于10"
else
echo "输入的不是数字"
fi
case语句
case variable in
value1)
code;;
value2)
code;;
esac
实例
echo "输入一个编码,返回分类"
read score
case "${score}" in
"0101")
echo "外墙砖";;
"0102")
echo "仿古砖";;
"0103")
echo "抛光砖";;
esac