shell脚本面试题
shell脚本面试题
常见笔试题
基础题
- 三种引号之间的区别
- 四个配置文件的启动顺序:先profile到bashrc
- read的交互的使用方法
- 脚本怎么调试:bash -x
- $0、$1、$#、$@、$* 都是什么意思
- $?、$$
- 变量运算的格式$(( ))、$[ ]、expr
- 变量的替换和删除(从前向后,从后向前,变量替换)
- 统计history的top10
- 每月的第一天备份并压缩/etc目录里面所有的内容,存放在/root/bak目录里面,备份完成的文件格式为:“yymmdd_etc”,脚本名称为backup.sh存放在/server/scripts目录下。
函数与数组
- 函数是什么?函数就是一个代码片段,为了保持代码的简洁性,方便后续调用。
- 在使用函数时应该注意什么?位置参数和函数里面的位置参数没有关系,而和函数之外的位置参数有关系
函数返回值当中return和echo有什么不同? - 什么是数组?其实数组和变量差不多,变量只能存一个值,而数组可以存多少值
- 数组的分类?普通数组和关联数组。
- 普通数组和关联数组有什么区别?普通数组只能用整数做为索引,而关联数组可以使用字符串做为索引,而且还要提前进行声明。
if相关
if与||和&&的转换
说出文件比对的5个参数:r、w、x、f、d
整数比对:-eq、-ne、-gt、-ge、lt、le
整数比对脚本:编写一个脚本,当内存/磁盘用量达到80%的时候触发邮件报警。
case:
case其实和if很像,本质是一样的,只不过case更严格一些 ,case的主要应用场景在服务和脚本的启停
for循环:
用for循环打印一个序列:for (( i=10;i>=1;i-- ));do echo $i;done
批量添加用户,提示输入前缀和用户个数,随机密码,说一下思路
批量探测主机,说一下思路
分库分表备份,说 一下思路
主从状态监测
while
for和while的区别,for可以指定次数,而while只要条件为真通常是无限的。
while的read line比较常用、
面试题
1.你写过哪些脚本?,都是怎么写的,说一说思路
- 对配置文件打包备份的
- 批量添加用户的
- 备份数据库的
- 内存用量报警的
- 检测词频的
2.如果我让你写一个监控网站的脚本,如果网站挂了就向你报警,你会怎么写