Shell笔记-运算、条件、循环
文章目录
Shell介绍
运算和运算符
运算
Bash本身不支持数学运算,它是通过其他命令(函数)来实现的,例如:awk和expr,常用expr。expr支持的运算有+,-,*,/,%,==,!=。
注意
Shell运算本质上是通过命令(函数)实现的,所以
1. 想要赋值给一个变量,只能通过`变量转化`实现。
2. 表达式和运算符之间要有空格(本质上是一个个参数)
运算符
注意表达式和运算符之间必须要有空格
关系运算符
1
2
3
4-eq #两边是否相等
-ne #两边是否不等
-gt/-lt #大于/小于
-ge/-le #大于等于/小于等于逻辑运算符
1
2
3! #非运算
-o # or,或运算
-a # and,与运算字符串运算符
1
2
3
4
5= 字符串是否相等。 [ $a = $b ] 返回 false。
!= 字符串是否不相等。 [ $a != $b ] 返回 true。
-z 字符串长度是否为0。 [ -z $a ] 返回 false。
-n 字符串长度是否不为0。[ -n $a ] 返回 true。
str 检测字符串是否不为空。[ $a ] 返回 true。文件测试运算符
1
2
3
4
5
6
7-d file 是否是目录文件
-f file 是否为普通文件,非块/字符设备文件,非目录
-r/-w/-x file 是否为可读/写/操作文件
-s file 文件是否不为空(文件大小大于0)
-e file 文件是否存在
条件控制
判断语句
if语句
格式:
1
2
3
4
5
6
7
8
9
10if [ expression ]
then
语句..
elif [ expression ]
then
语句..
else
语句..
if注意:
- expression 和方括号([ ])之间必须有空格
- then 必须另起一行或者使用
.. [ ... ]; then ..格式;逻辑语句必须另起一行写
一些简单的if语句,也可以使用
&&逻辑替换,具体语法如下:1
2[ expression ] && command
case语句 (相当于其他语言的switch语句)
格式:
1
2
3
4
5
6
7
8
9
10
11
12case 取值 in
模式1)
语句
;;
模式2)
语句
;;
*)
语句
;;
esac取值可以为变量,也可以为常量模式必须以)结束,模式可以使用|(或)组合,*)表示其他,相当于switch中的defualt。;;相当于switch的break,表示命令结束,注意;;必须另起一行。
while语句
格式:
1
2
3
4
5while [ expression ]
do
语句
done表示当expression为true时,执行语句
until语句
格式等同于while,不同的是它在expression为false时运行语句
其它
break,break n跳出,跳出n层循环,必须另起一行continue跳出本次循环,必须另起一行
原文作者: hxkuan