一、选择题(每小题 2 分,共 20 分)
1、下列变量命名为Shell中无效变量名的是( D )
|---------|---------|
| A、v_ar1 | B、var1 |
| C、_var | D、*var |
变量名以字母开头,包含下划线和数字。
2、关于expr命令的使用下列命令中得数不等于14的是( C )
|--------------|---------------|---------------|---------------|
| A、expr 6 + 8 | B、expr 28 / 2 | C、expr 2 * 7 | D、expr 16 - 2 |
echo $(expr 6 + 8)
3、以下不属于Shell的非交互式使用特点的是( C )
|-----------------|--------------|
| A、需要提前设计、智能化难度大 | B、批量执行、效率高 |
| C、逐条解释执行、效率低 | D、方便在后静悄悄地运行 |
逐条解释执行的特点适用于Shell的交互式使用,而非交互式使用时,Shell脚本可以批量执行命令,提高效率。
4、下列使用test命令算术测试实例输出结果为 No 的是( B )
|--------------------------------------------------|--------------------------------------------------|
| A、test 5 -eq 5 && echo Yes || echo No | B、test [ 5 -gt 10 ] && echo Yes || echo No |
| C、test [ 5 -le 10 ] && echo Yes || echo No | D、test 5 -ne 10 && echo Yes || echo No |
test 5 -eq 5 && echo Yes || echo No:-eq 表示相等,所以 test 5 -eq 5 返回真(true)
5、下列结构属于if单分支结构的是( B )
|-------------------------|------------------|------------------|--------------------------------|
| A、if...elif...else...fi | B、if...else...fi | C、if...then...fi | D、if...elif...elif...else...fi |
if...elif...else...fi:这是一个多分支结构,包含了 elif(else if)和 else 分支。
if...else...fi:这是一个单分支结构,只包含了 if 和 else 分支,没有额外的 elif。
if...then...fi:这是一个基本的单分支结构,只有 if 和 then,以及结束符 fi。
if...elif...elif...else...fi:这是一个多分支结构,包含了多个 elif 和一个 else 分支。
基本单分支(if...then 结构):不包含 else 分支,因此只有一种执行路径:条件成立时执行 then 后面的命令。
6、在正则表达式中元字符句点 "."使用"360."不可能匹配的字符是( B )
|----------|--------|
| A、3600 | B、360 |
| C、360abc | D、3606 |
360后面要跟一个字符
8、下列选项中,在正则表达式中哪个元字符表示匹配一个或多个重复的前一个字符?( B )
|-----|------|
| A、? | B、+ |
| C、$ | D、* |
?:匹配零个或一个重复的前一个字符。
+:匹配一个或多个重复的前一个字符。
$:匹配输入的结尾位置。
*:匹配零个或多个重复的前一个字符。
- 下列选项属于在Shell脚本中,正确函数定义的是?( A )
|------------------------|
| A、 my_function() {} |
| B、 func my_function {} |
| C、def my_function {} |
| D、fn my_function() {} |
10、下列选项中,哪个sed命令用于替换单词"apple"为"orange"?( B )
|--------------------|-------------------|
| A、 g/apple/orange/ | B、s/apple/orange/ |
| C、 r/apple/orange/ | D、d/apple/orange/ |
sed
1.在Shell脚本中,用来检查文件是否存在的条件测试符是_____-e________。
#!/bin/bash
file="/a.txt"
if [ -e "$file" ]; then
echo "文件 $file 存在."
else
echo "文件 $file 不存在."
fi
2.Shell脚本中,可以使用read命令的______-s_____选项来隐藏用户的输入。
#!/bin/bash
echo "请输入密码:"
read -s password
echo "密码已输入,长度为 ${#password}。"
3.如何只用 echo 命令替换字符串的一部分 ?
答: 用sed ;例如:echo "Hello, World" | sed 's/World/Universe/'
4.计算本地用户数目 ?wc -l /etc/passwd;这条命令将统计/etc/passwd文件中的行数,每一行对应一个用户的信息。在Unix和类Unix系统中,/etc/passwd文件包含了系统中所有用户的基本信息。
5.如何列出第二个字母是 a 或 b 的文件 ?
ls | grep -E '^.a|^.b',注意ls是在当前目录下操作的
6.如何将整数 a 加到 b 并赋值给 c ?
c=$((a + b))再echo $c
重写这个命令,将输出变量转换为复数: item="car"; echo "I like $item" ?
答:item="car";echo "I like ${item}s"
哪个命令将命令替换为大写 ?
答:用tr例如:echo "hello world" | tr 'a-z' 'A-Z'
不用 wc 命令如何计算字符串中的单词数目 ?
#!/bin/bash 脚本解释器为 Bash
string="This is a sample string."
#这一行将字符串 $string 按照空格分割成数组 words,删除多余的空格,数组的每个元素就是一个单词。
words=($string)
# ${#words[@]} 是获取数组长度的方式,即数组 words 中单词的个数。
echo "Number of words: ${#words[@]}"
如何去除字符串中的所有空格 ?
#!/bin/bash
str="Hello World"
#'s/ //g' 中的 s 表示替换操作;/ / 是要替换的内容,这里是空格;
#/g 表示全局替换,即一次处理所有匹配;
所以,sed 's/ //g' 的作用是将字符串中的所有空格替换为空,即去除所有空格。
xiaoxiaowang=$(echo $str | sed 's/ //g')
echo $xiaoxiaowang
为新装的客户机配好Yum仓库。
--软件源位于 file:///misc/cd
--通过脚本建立 /etc/yum.repos.d/rhel6.repo 文件
#!/bin/bash
# 定义Yum仓库配置内容
cat <<EOF > /etc/yum.repos.d/rhel6.repo
[rhel6] 软件源的名称
name=Red Hat Enterprise Linux 6 软件源的描述
baseurl=file:///misc/cd
enabled=1 这表示启用该软件源。1 表示启用,0 表示禁用。
gpgcheck=0 gpk检验
EOF
# 确认仓库文件创建成功
if [ -f /etc/yum.repos.d/rhel6.repo ]; then
echo "/etc/yum.repos.d/rhel6.repo 文件已成功创建。"
else
echo "创建 /etc/yum.repos.d/rhel6.repo 文件失败。"
fi