一、填空题
- Linux 系统中的输入输出分为三类,分别为:(标准输入)、标准输出和(标准错误)。
- 当执行 gcc -c hello.c 2>file 命令时,系统会将执行命令时的(错误)输出到文件 file 中。
- 执行 Shell 脚本的方法有两种,假设现有一个脚本文件 test.sh,则执行该脚本的方式分别为:(chmod +x test.sh ./test.sh)和(sh test.sh)。
- Shell 中的变量没有明确的类型,变量值都以字符串的形式存储,但 Shell 中也可能进行一些算术运算,Shell 中的运算一般通过两个命令实现:(let)和(expr)。
- 条件判断是条件语句的核心,Shell 中通常使用(test)命令或([)命令对条件进行判断,这两个命令判断的条件可以是命令或脚本。
- Shell 脚本中常用的条件语句有三种,分别为:(if)语句、(select)语句和(case)语句。
二、判断题
- cat<file 命令的功能是将 cat 命令打印的结果重定向到文件 file 中。(×)
- Shell 的原意为“壳”,它包裹在内核之外,处于硬件与内核之间。其主要功能为接收用户输入的命令,找到命令所在位置,并加以执行。(×)
- Shell 最重要的功能是命令解释,Linux 系统中的所有可执行文件都可以作为 Shell 命令来执行。(√)
- 使用 & 连接符连接的命令,其前后命令的执行遵循逻辑与关系,只有该连接符之前的命令执行成功时,后面的命令才会被执行。(√)
- 在 Shell 编程中,使用 echo 命令可打印字符串。若当前脚本中定义了变量 var=“hello itheima”,则语句 echo ‘$var’ 打印的结果为 hello itheima。(×)
三、单选题
-
分析以下脚本代码:
#!/bin/sh var="hello itheima" echo "$var" echo '$var' exit 0
从以下选项中选出正确的执行结果。(B)
A.
hello itheima hello itheima
B.
hello itheima $var
C.
$var hello itheima
D.
$var $var
-
从以下四个选项中,选出能成功将标准错误重定向到 file 文件中的选项。(C)
A. gcc hello.c 2<file
B. gcc hello.c 1<file
C. gcc hello.c 2>file
D. gcc hello.c 2>>file
-
若需要在当前终端上顺序执行命令,则应使用下列哪个符号连接?(A)
A. ;
B. |
C. &&
D. ||
四、简答题
-
分析以下脚本代码:
#!/bin/bash sum=1 for((i=1; i<=10; i++)) do sum='expr $sum + $i' echo $sum done echo "sum1~10=$sum"
写出此脚本的执行效果。
2 4 7 11 16 22 29 37 46 56 sum1~10=56
-
写出 Shell 脚本中 while 循环与 until 循环的基本格式,并简述这两种循环结构的区别。
# while循环 while [ 表达式 ] do ... done
# until循环 until [ 表达式 ] do ... done
当 while 循环的条件为真时执行循环中的命令;当 until 循环中的条件为假时执行循环中的命令。
五、编程题
-
编写 Shell 脚本实现如下菜单界面:
Menu 1) exit 2) edit file 3) date 4} calc #?
#!/bin/sh echo "Menu" select _command in "exit" "edit file" "date" "calc" do echo "$_command" break done exit 0
-
编写 Shell 脚本,实现批量添加用户功能,要求如下:
① 用户名格式统一,为相同字符串加数字编号,如 qwe1~qwe9;
② 用户密码与用户名相同。
#!/bin/sh for((i=1; i<=9; i++)) do name=qwe$i sudo useradd $name echo $name | sudo passwd --stdin $name done exit 0
-
编写 Shell 脚本,实现批量删除用户功能,其中用户的用户名格式统一(如 qwe1~qwe9)。
#!/bin/sh for((i=1; i<=9; i++)) do sudo userdel qwe$i done exit 0