目录
Linux Shell编程与条件语句
一、Test
测试特定的表达式是否成立,当条件成立,测试语句的返回值为0,否则为其他数值
格式:test 条件表达式 或 [ 条件表达式 ] (条件表达式的两边都需要空格,且此方法更为常用)
文件测试
常用选项
常见的测试操作符 含义
-d 测试是否为目录(directory)
-e 测试目录或文件是否存在(Exist)
-f 测试是否为文件(File)
-r 测试当前用户是否有权限读取(Read)
-w 测试当前用户是否有权限写入(Write)
-x 测试当前用户是否有权限执行(eXcute)
-L 测试是否为软连接文件
-nt 判断文件A是否比文件B新
-ot 判断文件A是否比文件B旧
-ef 判断两个文件是否为同一文件
例1
例2
例3:可以使用 && 和 echo 一起使用
例4:可以使用 || 和 echo 一起使用
例5:比较两个文件
整数值比较
格式:[ 整数1 操作符 整数2 ]
常见测试操作符
操作符 含义
-eq 等于(Equal)
-ne 不等于(Not Equal)
-lt 小于(Leser Than)
-gt 大于(Greater Than)
-le 小于或等于(Lesser or Equal)
-ge 大于或等于(Greater or Equal)
例1:查询当前目录下的文件数是否大于10,如果大于,则进行提示
例2:查看系统内存是否低于1024M,如果低于则提示
字符串比较
格式:[ 字符串1 = 字符串2 ] //判断是否相等
[ 字符串1 != 字符串2 ] //判断是否不等
[ -z 字符串 ] //判断字符串内容是否为空
操作符
操作符 含义
= 字符串内容相同
!= 字符串内容不同,!号表示相反的意思
-z 字符串内容为空
例1:判断当前系统语言环境是否为“us.en”,如果不是则提示
逻辑测试
格式:[ 表达式1 ] 操作符 [ 表达式2 ]
命令1 操作符 命令2
操作符
-a 或 && 逻辑与,而且的意思
-o 或 ▕▕ 逻辑或,或者的意思
! 逻辑否
二、if
单分支结构
如果只有一个判断式要进行,那么我们可以使用单分支的if语句 ,只有在条件成立时才会执行,否则不执行任何操作
格式:
if [ 条件判断语句 ]
then
echo “当前条件成立时,执行一条或多条命令”
fi
例:使用单分支语句判断 c 文件是否存在
双分子结构
在同一个数据的判断中,如果该数据需要进行两种不同的判断,我们就需要双分支if语句了
格式:
if [ 条件判断式 ]
then
echo “当条件判断成立时,可以执行一条或多条命令”
else
echo “当条件判断不成立时,可以执行一条或多条命令”
fi
例:判断用户输入的是否为yes
多分支结构
如果数据需要进行多种不同的判断,则可以使用多分支结构 嵌套使用
格式:
if [ 条件判断式 ]
then
echo “当条件判断成立时,可以执行一条或多条命令”
elif [ 条件判断式二 ]
then
echo “当条件判断式成立时,可以执行一条或多条命令”
else
当上面的条件判断都不成立时,可以执行一条或多条命令
fi
例:多分支判断成绩
三、case
格式:
case 变量名称 in
模式1)
命令序列
;;
模式2)
程序段
;;
*)
不包含第一个变量内容与第二个变量内容的其它程序执行段
默认程序段
;;
esac
case行首必须以单词 “in”,每一模式必须以单个右括号")"结束
双分号 ";;" 表示命令序列的结束
模式字符串中,可以用方括号表示一个连续的范围,如 "[0-9]";还可以使用竖杠 | 表示或,比如a|b
最后的 ) 表示默认模式,其中的相当于通配符
例:不管输入大小写字母,都能输出yes或者no