目录
- 8. 运算符
- 8.1 基本介绍
- 8.2 基本语法
- 9. 条件判断
- 9.1 基本语法
- 9.2 应用实例
- 9.3 常用判断条件
- 9.4 应用实例
- 10. 流程控制
- 10.1 if判断
- 10.2 case 语句
- 10.3 for 循环
- 10.4 while 循环
- 11. read 读取控制台输入
- 11.1 基本语法
- 11.2 应用实例
- 12. 函数
- 12.1 函数介绍
- 12.2 系统函数
- 12.3 应用实例
- 12.4 自定义函数
8. 运算符
8.1 基本介绍
学习如何在 shell 中进行各种运算操作。
8.2 基本语法
1) “$((运算式))”或“$[运算式]”
2) expr m + n
注意 expr 运算符间要有空格
3) expr m - n
4) expr \*, /, % 乘,除,取余
- 应用实例
案例1:计算 (2+3)*4 的值
1)$((运算式))
9. 条件判断
9.1 基本语法
案例 1:"ok"是否等于"ok"
判断语句:
[ condition ](注意 condition 前后要有空格)
#非空返回 true,可使用$?验证(0 为 true,>1 为 false)
9.2 应用实例
[ atguigu ]
[]
返回 true
返回 false
[condition] && echo OK || echo notok
条件满足,执行后面的语句
9.3 常用判断条件
1)两个整数的比较
= 字符串比较
-lt 小于
-le 小于等于
-eq 等于
-gt 大于
-ge 大于等于
-ne 不等于
2) 按照文件权限进行判断
-r 有读的权限 [ -r 文件 ]
-w 有写的权限
-x 有执行的权限
3)按照文件类型进行判断
-f 文件存在并且是一个常规的文件
-e 文件存在
-d 文件存在并是一个目录
9.4 应用实例
案例 3:/root/install.log 目录中的文件是否存在
判断语句:
图7
10. 流程控制
10.1 if判断
- 基本语法
if [ 条件判断式 ];then
程序
fi
或者
if [ 条件判断式 ]
then
程序
elif [条件判断式]
then
程序
fi
注意事项:(1)[ 条件判断式 ],中括号和条件判断式之间必须有空格 (2) 推荐使用第二种方式
10.2 case 语句
- 基本语法
case $变量名 in
"值 1")
如果变量的值等于值 1,则执行程序 1
;;
"值 2")
如果变量的值等于值 2,则执行程序 2
;;
...省略其他分支...
*)
如果变量的值都不是以上的值,则执行此程序
;;
esac
10.3 for 循环
- 基本语法 1
for 变量 in 值 1 值 2 值 3...
do
程序
done
for (( 初始值;循环控制条件;变量变化 ))
do
程序
done
10.4 while 循环
- 基本语法
while [ 条件判断式 ]
do
程序
done
11. read 读取控制台输入
11.1 基本语法
read(选项)(参数)
选项:
-p:指定读取值时的提示符;
-t:指定读取值时等待的时间(秒),如果没有在指定的时间内输入,就不再等待了。。
参数
变量:指定读取值的变量名
11.2 应用实例
案例 1:读取控制台输入一个 num 值
案例 2:读取控制台输入一个 num 值,在 10 秒内输入。
图13
12. 函数
12.1 函数介绍
shell 编程和其它编程语言一样,有系统函数,也可以自定义函数。系统函数中,我们这里就介绍两个。
12.2 系统函数
- basename 基本语法
功能:返回完整路径最后 / 的部分,常用于获取文件名
basename [pathname] [suffix]
basename [string] [suffix]
(功能描述:basename 命令会删掉所有的前缀包括最后一个(‘/’)
字符,然后将字符串显示出来。
选项:
suffix 为后缀,如果 suffix 被指定了,basename 会将 pathname 或 string 中的 suffix 去掉。
- dirname 基本语法
功能:返回完整路径最后 / 的前面的部分,常用于返回路径部分
dirname 文件绝对路径 (功能描述:从给定的包含绝对路径的文件名中去除文件名(非目录的
部分),然后返回剩下的路径(目录的部分))
12.3 应用实例
案例 1:请返回 /home/aaa/test.txt 的 "test.txt" 部分
图14
12.4 自定义函数
- 基本语法
[ function ] funname[()]
{
Action;
[return int;]
}
调用直接写函数名:funname [值]