第 5 章 shell编程_课后题

考试题1:用source执行脚本和用bash执行Shell脚本的区别是什么?
souce执行脚本相当于是在一个shell当中,而bash执行脚本相当于开启了一个子shell。就变量而言,一个shell当中执行的变量是可以用的,而子shell的变量,父shell中是不能继承的,子脚本执行完后,变量就失效了。

考试题2:如何自定义环境变量?
变量分为:环境变量和普通变量,环境变量定义:例子 echo 'Oldboy=od' >>/etc/bashrc source /etc/bashrc
优先级: /etc/bashrc ~/.bashrc ~/.bash_profile /etc/profile

考试题3:定义变量内容,不加引号、单引号、双引号、反引号结果有什么不同?应该怎么用?
不加引号:默认相当是双引号 数字
单引号:所见即所得,吃啥吐啥 不想被解析的变量、函数
双引号:会将变量、函数、特殊符号等解析出来 字符串
反引号:会先计算反引号里面的命令 想优先计算的命令

考试题4:请分别说出2个以上用于整数运算特殊符号或命令,以及适合小数运算的命令。
整数:(()) expr let $[]
适合小数:bc awk

考试题5:写出特殊变量对应的意义及应用br/>$0、$n、$#、$*、$@、$?、$$、$!、$_
$0表示文件名
br/>$n表示第n个参数
$#表示参数的个数
$*表示所有位置参数,但会把所有位置参数当作一个整体
$@表示所有位置参数,但$@中会把每个位置参数当作一个独立的字段
$? 判断上一个脚本或者命令是否运行正确,如果正确用0,如果错误用其他数字表示
$$ 表示当前脚本或程序运行的pid号
$! 表示上一个后台工作进程的pid号
$_ 获取上一个脚本执行的最后一个参数

考试题6:写出下面特殊变量扩展的意义
${oldboy}、${#oldboy}、${oldboy:offset:length}、${oldboy#word}、${oldboy##word}、${oldboy%word}、${oldboy%%word}、${oldboy/pattern/string}、${oldboy//pattern/string}、${oldboy:-word}
${oldboy} 获取变量的内容
${#oldboy} 获取变量的字符长度
${oldboy:offset:length} 变量的偏移量,从“offset”之后开始取字符长度,取“length”长度个字符
${oldboy#word} 从变量内容的开始方向,最短匹配内容,然后将内容取出来
${oldboy##word} 从变量内容的开始方向,最长匹配内容,然后将内容取出来
${oldboy%word} 从变量内容的后面,最短匹配内容,然后将内容取出来
${oldboy%%word} 从变量内容的后面,最长匹配内容,然后将内容取出来
${oldboy/pattern/string} 找到变量内容的“pattern",将第一处替换成"string"
${oldboy//pattern/string} 找到变量内容的“pattern",将所有替换成"string"
${oldboy:-word} 如果“oldboy”这个变量没有值,就让“world”这个变量取代它,但注意,"oldboy"这个变量不会被赋值

考试题7:在条件测试与表达式中,[]和[[]]有何区别?
[] 一条判断语句,如果是多个条件判断,用-a -o来联合使用
[[]] 多个语句来联合判断,用&&或||来关联测试语句

考试题8:说出适合在[]以及test中整数比较的特殊运算符号?
-z -n = !=
-gt -eq -lt -ge -le -ne
-a -o !
-f -d -e -x -l -r -w -b

考试题9、输出下面菜单
1.install MySQL
2.install Tomcat
3.exit
当用户选择对应的数字就开始安装对应的服务(可echo输出替代),需要对用户输入的数字进行判断是否为整数(用条件测试表达式实现)。
#!/bin/bash
#Author Young
#at 20200210
#desc install memu
read -t 30 -p "请输入一个数字Usage:{1|2|3}:" a
[ -z $a ] &&{
echo "你输入的值为空!"
exit 1
}
expr 1 + $a &>/dev/null
[ $? -ne 0 ] &&{
echo "请输入整数!"
exit 2
}
[ $a -eq 1 ] &&{
echo "install MySQL..."
exit
}
[ $a -eq 2 ] &&{
echo "install Tomcat..."
exit
}
[ $a -eq 3 ] &&{
echo "bye"
exit
}
[ $a -ne 1 -o $a -ne 2 -o $a -ne 3 ] &&{
echo "只能输入1|2|3"
exit
}

考试题10、使用read读入方式比较两个整数大小(用条件表达式实现)。
#!/bin/bash
#Author Young
#at 20200210
#desc compare
read -t 30 -p "请输入两个整数:" a b
[ -z $b ] &&{
echo "请完整输入两个整数!"
exit 1
}
expr 1 + $a + $b &>/dev/null
[ $? -ne 0 ] &&{
echo "你输入的不是两个整数!"
exit 2
}
[ $a -gt $b ] &&{
echo "$a 大于 $b"
exit
}
[ $a -lt $b ] &&{
echo "$a 小于 $b"
exit
}
[ $a -eq $b ] &&{
echo "$a 等于 $b"
exit
}

猜你喜欢

转载自blog.51cto.com/tangyong/2470054