Shell面试重点:变量规则、预定义变量与正则表达式解析

需积分: 5 0 下载量 173 浏览量 更新于2024-08-26 收藏 233KB PDF 举报
"第三阶段技术面试知识点.pdf" 在技术面试中,Shell编程是常见的考察点,以下是一些关于Shell的重要知识点: 1. **Shell变量规则**: - 变量名可以包含数字、字母和下划线,但不能以数字开头。 - 变量名对大小写敏感。 - 赋值时,等号两侧不应有空格。 - 避免使用关键字和特殊字符作为变量名。 - 多次赋值给同一变量时,最后一次赋值有效。 2. **预定义变量**: - `$$`:保存当前进程的进程ID(PID)。 - `$?`:保存上一条命令的执行结果,通常是一个退出状态码。 - `$0`:保存当前执行的进程名称或脚本名称。 - `$#`:保存位置参数的个数。 - `$*`:保存所有位置参数的值,以空格分隔。 - `$!`:保存后台运行的最后一个进程的PID。 3. **变量赋值的定界符**: - 双引号`"`:允许变量扩展,如`$var`会被替换为变量的实际值。 - 单引号`'`:禁止变量扩展,所有`$`被视为普通字符。 - 反撇号``:用于执行命令并将输出作为变量的值。 4. **整数值比较操作**: - `-eq`:判断两个数值是否相等。 - `-ne`:判断两个数值是否不相等。 - `-ge`:判断第一个数值是否大于或等于第二个数值。 - `-le`:判断第一个数值是否小于或等于第二个数值。 - `-gt`:判断第一个数值是否大于第二个数值。 - `-lt`:判断第一个数值是否小于第二个数值。 5. **Shell控制结构**: - `break`:退出当前循环,继续执行循环体之后的代码。 - `continue`:跳过当前循环剩余的语句,进入下一次循环。 - `exit`:终止脚本执行,返回默认值0(成功)或指定的退出状态码。 - `return`:在函数内部使用,返回一个指定的值。 - `shift`:将位置参数向左移动,例如`shift`后`$1`变为原来的`$2`,以此类推。 6. **正则表达式符号**: - `+`:匹配前面的元素至少一次,例如`a+`匹配一个或多个连续的`a`。 - `?`:匹配前面的元素零次或一次,例如`a?`匹配零个或一个`a`。 - `*`:匹配前面的元素任意次,包括零次,例如`a*`匹配零个或多个连续的`a`。 7. **awk工具的内置变量**: - `FS`:设置或获取字段分隔符,默认为空格或制表符。 - `$n`(如`$1`、`$2`):表示以`FS`分隔的第n个字段。 - `$0`:包含当前行的完整文本。 - `NF`:当前行的字段数量(列数)。 - `NR`:已读取的总行数。 - `FNR`:当前文件中的行号。 - `FILENAME`:记录awk正在处理的文件名。 - `ENVIRON`:提供访问Shell环境变量的能力,如`ENVIRON["VARNAME"]`。 以上知识点涵盖了Shell编程的基础部分,对于技术面试来说,理解并掌握这些概念是至关重要的。在实际面试中,面试官可能会结合这些知识点进行深入的讨论,例如编写脚本来解决特定问题或者分析给定的Shell脚本。熟悉这些基本概念,能够帮助你在面试中展现出扎实的Shell技能。