跳到主要内容

Shell面试题

Shell基础知识

基本概念

  1. 什么是Shell?常见的Shell有哪些?
  2. 如何查看当前系统使用的是什么Shell?
  3. 如何切换不同的Shell?
  4. Shell脚本的执行方式有哪些?
  5. 如何让Shell脚本具有可执行权限?

变量与引号

  1. Shell中如何定义变量?如何引用变量?
  2. Shell脚本中单引号、双引号和反引号的区别?
  3. 什么是环境变量?如何查看和设置环境变量?
  4. 局部变量和全局变量的区别?
  5. 如何将命令的执行结果赋值给变量?
  6. $0、$1、$#、$@、$*、$?、$$分别代表什么意思?

特殊符号与操作符

  1. Shell里的括号使用上有哪些区别:()、{}、[]、[[]]、``、$()
  2. 管道符(|)的作用是什么?
  3. 重定向符号 >、>>、< 、2>、&>的区别?
  4. &&和||的作用是什么?
  5. 分号(;)和后台执行(&)的区别?

Shell编程基础

条件判断

  1. Shell中如何进行条件判断?
  2. test命令和[]的关系是什么?
  3. 字符串比较的操作符有哪些?
  4. 数字比较的操作符有哪些?
  5. 文件测试的常用选项有哪些?
  6. if语句的基本语法是什么?

循环结构

  1. Shell中的for循环有哪几种写法?
  2. while循环和until循环的区别?
  3. 如何在循环中使用break和continue?
  4. 如何遍历一个目录下的所有文件?
  5. 如何读取文件的每一行进行处理?

函数

  1. Shell中如何定义和调用函数?
  2. 如何向函数传递参数?

Shell实用技巧

字符串处理

  1. 如何获取字符串的长度?
  2. 如何截取字符串的子串?
  3. 如何进行字符串的替换?
  4. 如何判断字符串是否为空?
  5. 如何拼接字符串?

数组操作

  1. Shell中如何定义数组?
  2. 如何获取数组的长度?
  3. 如何遍历数组元素?
  4. 如何向数组添加元素?

文本处理三剑客

  1. grep、sed、awk分别的作用是什么?
  2. 如何使用grep查找包含特定字符串的行?
  3. 如何使用sed进行文本替换?
  4. 如何使用awk提取特定列的数据?
  5. 如何统计文件的行数、单词数、字符数?

Shell脚本调试与优化

调试技巧

  1. 显示Shell脚本执行的详细过程,Shell脚本调试的方法有哪些?
  2. 如何在脚本中添加调试信息?
  3. 如何检查脚本的语法错误?

错误处理

  1. 如何捕获命令的执行结果?
  2. 如何处理脚本执行中的错误?
  3. trap命令的作用是什么?

实际应用题

日常运维脚本

  1. 对Shell编程熟悉吗?举例说下你之前编写过的一些脚本?
  2. 写一个批量创建用户的脚本
  3. 写一个检查服务是否运行的脚本
  4. 写一个日志清理脚本(清理30天前的日志)
  5. 写一个系统资源监控脚本(CPU、内存、磁盘)
  6. 写一个文件备份脚本
  7. 现场写个服务启动脚本

文本分析处理

  1. 如何统计一个文件中某个单词出现的次数?
  2. 如何提取访问网站最多的前10个IP地址?
  3. 如何找出系统中占用空间最大的前10个文件?
  4. 如何批量修改文件名?
  5. 如何从日志文件中提取特定时间段的日志?

进阶应用

  1. 正在运行的服务如何用Shell脚本停止?
  2. 如何写一个脚本监控某个进程,如果进程挂了自动重启?
  3. 如何写一个脚本实现简单的菜单选择功能?
  4. Shell脚本中如何实现并发执行?
  5. 如何在Shell脚本中发送邮件通知?

总而言之,你写过哪些Shell脚本?你写过最有难度的Shell脚本是什么?

更新: 2024-10-16 14:49:39