嵌入式系统与应用复习题(3)
- 2026-11-03 01:06:19
嵌入式系统与应用复习题(三)
(含答案与解析)
一、单选题
1. 在Linux系统,默认的shell是什么()
A. | bash |
B. | ash |
C. | csh |
D. | gnush |
正确答案:A
【解析】Linux 系统默认的 shell 是 bash(Bourne Again Shell),它是 Linux 发行版中最广泛使用的 shell,兼容 Bourne Shell(sh),并增加了命令补全、命令历史等交互功能。ash 轻量但功能较少,csh 语法类似 C 语言,gnush 是 GNU 的通用 shell 实现。
2. 在Shell脚本中,用于注释单行代码的符号是?
A. | // |
B. | # |
C. | /* */ |
D. | -- |
正确答案:B
【解析】Shell 脚本中单行注释以 # 开头,从 # 之后到行尾的内容均为注释,解释器会忽略;// 是 C/C++/Java 等语言的单行注释,/* */ 是多行注释,-- 是 SQL 或某些脚本语言中的注释符。
3. 一个标准的Shell脚本文件通常以什么字符序列开头来指定解释器?
A. | $/bin/sh |
B. | #!/bin/sh |
C. | use /bin/sh |
D. | set shell=/bin/sh |
正确答案:B
【解析】Shell 脚本开头的 #!/bin/sh 称为 Shebang(脚本解释器声明),其中 #! 告诉系统使用后面的解释器来执行脚本。$/bin/sh 缺少感叹号,use 和 set shell= 不是标准写法。
4. 若要检查一个文件是否存在(不论类型),应使用哪个测试条件?
A. | [ -f filename ] |
B. | [ -d filename ] |
C. | [ -e filename ] |
D. | [ -x filename ] |
正确答案:C
【解析】-e(exists)测试文件是否存在(可以是任意类型:普通文件、目录、链接、设备文件等);-f 测试是否为普通文件(非目录);-d 测试是否为目录;-x 测试是否有执行权限。
5. 用于改变当前工作目录的Shell内置命令是?
A. | pwd |
B. | ls |
C. | cd |
D. | dir |
正确答案:C
【解析】cd(change directory)是 Shell 内置命令,用于切换当前工作目录;pwd 显示当前目录路径,ls 列出目录内容,dir 是部分系统的目录列表命令(Linux 下等效于 ls --format=vertical)。
6. 在Bash中,如果希望在前一个命令成功执行后才执行后一个命令,应使用哪个连接符?
A. | ; |
B. | || |
C. | && |
D. | | |
正确答案:C
【解析】&& 逻辑与操作符:前一个命令执行成功(返回值为0)才执行后一个命令;; 不论成功与否都顺序执行;|| 是逻辑或(前一命令失败才执行后一个);| 是管道(将前一个命令的输出作为后一个的输入)。
7. 在Shell脚本中,如何引用变量的值?
A. | $variable |
B. | %variable% |
C. | @variable |
D. |
正确答案:A
【解析】Shell 中引用变量值使用 $变量名 的形式,如 $var;%variable% 是 MS-DOS/批处理脚本的变量格式,@variable 无特殊含义(@ 在批处理中用于关闭命令回显),#variable# 不是 Shell 标准语法。
8. 下列变量名中有效的shell变量名是( )。
A. | -l-time |
B. | _2$3 |
C. | bo_chuang_1 |
D. | 2009file |
正确答案:C
【解析】Shell 变量名规则:必须以字母或下划线 _ 开头,后续字符可以是字母、数字或下划线。-l-time 含连字符 -(非法),_2$3 含 $(非法),2009file 以数字开头(非法)。bo_chuang_1 符合所有规则,是有效变量名。
9. 假设当前目录下有文件Makefile,下面是其内容:pr1: prog.o subr.o gcc -o pr1 prog.o subr.o;prog.c prog.h gcc -c -l prog.o prog.c;subr.o: subr.c gcc -c -o subr.o subr.c clean: rm -f pr1*.o 现在执行命令make clean,实际执行的命令是( )
A. | rm -f pr1*.o |
B. | gcc -c -l prog.o prog.c |
C. | gcc -c -o subr.o subr.c |
D. | 都执行 |
正确答案:A
【解析】make clean 调用 Makefile 中 clean 目标(伪目标,用于清理操作)。该目标执行命令 rm -f pr1*.o,仅删除匹配的文件。其他命令属于 pr1 和 prog.o: 等其他目标的依赖关系,make clean 不会执行它们。
10. 下面关于Shell的说法,不正确的是( )
A. | 操作系统的外壳 |
B. | 用户与Linux内核之间的接口程序 |
C. | 一个命令语言解释器 |
D. | 一种和C类似的程序语言 |
正确答案:D
【解析】Shell 是操作系统的外壳和用户与内核之间的接口,是一种命令语言解释器,但 Shell 不是"和 C 类似的程序语言"。虽然 Shell 脚本有一定的编程特性(如变量、循环、条件判断),但它本质上是一种解释型脚本语言,与 C 的编译型语言特性完全不同。
请在微信客户端打开
二、填空题
11. 通过指令__________,将自动读取Makefile配置文件
正确答案:make
【解析】make 命令会自动在当前目录查找 Makefile(优先级:GNUmakefile > Makefile > makefile),读取其中的规则并执行。无需额外参数,make 会自动读取并根据第一个目标开始构建。
12. 在编写shell脚本的练习中,一般第一行的格式为:__________
正确答案:#!/bin/bash
【解析】Shell 脚本第一行一般为 Shebang 行,格式为 #!/bin/bash(若使用 Bash 解释器)或 #!/bin/sh(使用 sh)。这一行指定了脚本由哪个解释器执行,确保脚本以正确的 shell 环境运行。
请在微信客户端打开
三、简答题
13. Makefile文件的自动化变量中,请描述"$@"、"$<"、"$^"的作用?
$@:表示规则中的目标文件
$<:表示规则中的第一个依赖文件
$^:表示规则中的所有依赖文件
【解析】Makefile 自动化变量:$@ 表示规则中的目标文件名;$< 表示规则中的第一个依赖文件名;$^ 表示规则中的所有依赖文件列表(不含重复)。这些变量在规则命令中自动展开,大大简化了规则的编写。
四、判断题(共2题,13.4分)
14. Shell是一种命令行解释器,它允许用户通过输入命令与操作系统内核进行交互。()
选项:A. 对 B. 错
正确答案:对
【解析】Shell(命令行解释器)确实是一种命令行界面,用户通过输入文本命令与操作系统内核进行交互。Shell 接收用户命令,解析后调用内核执行,并将结果返回给用户,这是 Linux/Unix 系统的核心交互方式。
15. 一个Shell脚本在执行前,必须将其扩展名为.sh,否则系统无法识别。()
选项:A. 对 B. 错
正确答案:错
【解析】Shell 脚本的扩展名 .sh 仅为方便人类识别,并非系统强制要求。系统通过 Shebang(#!/bin/bash 等)识别解释器,不依赖文件扩展名。实际项目中很多脚本不带扩展名或使用其他扩展名(如 .bash)。
请在微信客户端打开
注:本套习题仅用于知识自测














