Shell面试题
Shell基础知识
基本概念
- 什么是Shell?常见的Shell有哪些?
- 如何查看当前系统使用的是什么Shell?
- 如何切换不同的Shell?
- Shell脚本的执行方式有哪些?
- 如何让Shell脚本具有可执行权限?
变量与引号
- Shell中如何定义变量?如何引用变量?
- Shell脚本中单引号、双引号和反引号的区别?
- 什么是环境变量?如何查看和设置环境变量?
- 局部变量和全局变量的区别?
- 如何将命令的执行结果赋值给变量?
$0、$1、$#、$@、$*、$?、$$
分别代表什么意思?
特殊符号与操作符
- Shell里的括号使用上有哪些区别:
()、{}、[]、[[]]、``、$()
- 管道符(|)的作用是什么?
- 重定向符号
>、>>、< 、2>、&>的区别?
- &&和||的作用是什么?
- 分号(;)和后台执行(&)的区别?
Shell编程基础
条件判断
- Shell中如何进行条件判断?
- test命令和[]的关系是什么?
- 字符串比较的操作符有哪些?
- 数字比较的操作符有哪些?
- 文件测试的常用选项有哪些?
- if语句的基本语法是什么?
循环结构
- Shell中的for循环有哪几种写法?
- while循环和until循环的区别?
- 如何在循环中使用break和continue?
- 如何遍历一个目录下的所有文件?
- 如何读取文件的每一行进行处理?
函数
- Shell中如何定义和调用函数?
- 如何向函数传递参数?
Shell实用技巧
字符串处理
- 如何获取字符串的长度?
- 如何截取字符串的子串?
- 如何进行字符串的替换?
- 如何判断字符串是否为空?
- 如何拼接字符串?
数组操作
- Shell中如何定义数组?
- 如何获取数组的长度?
- 如何遍历数组元素?
- 如何向数组添加元素?
文本处理三剑客
- grep、sed、awk分别的作用是什么?
- 如何使用grep查找包含特定字符串的行?
- 如何使用sed进行文本替换?
- 如何使用awk提取特定列的数据?
- 如何统计文件的行数、单词数、字符数?
Shell脚本调试与优化
调试技巧
- 显示Shell脚本执行的详细过程,Shell脚本调试的方法有哪些?
- 如何在脚本中添加调试信息?
- 如何检查脚本的语法错误?
错误处理
- 如何捕获命令的执行结果?
- 如何处理脚本执行中的错误?
- trap命令的作用是什么?
实际应用题
日常运维脚本
- 对Shell编程熟悉吗?举例说下你之前编写过的一些脚本?
- 写一个批量创建用户的脚本
- 写一个检查服务是否运行的脚本
- 写一个日志清理脚本(清理30天前的日志)
- 写一个系统资源监控脚本(CPU、内存、磁盘)
- 写一个文件备份脚本
- 现场写个服务启动脚本
文本分析处理
- 如何统计一个文件中某个单词出现的次数?
- 如何提取访问网站最多的前10个IP地址?
- 如何找出系统中占用空间最大的前10个文件?
- 如何批量修改文件名?
- 如何从日志文件中提取特定时间段的日志?
进阶应用
- 正在运行的服务如何用Shell脚本停止?
- 如何写一个脚本监控某个进程,如果进程挂了自动重启?
- 如何写一个脚本实现简单的菜单选择功能?
- Shell脚本中如何实现并发执行?
- 如何在Shell脚本中发送邮件通知?
总而言之,你写过哪些Shell脚本?你写过最有难度的Shell脚本是什么?
更新: 2024-10-16 14:49:39