期末考核题目
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
期末考核内容
每人按照老师的要求,顺序或随即从下面shell编程部分和环境编程部分分别选择一题,然后在课堂上进行编程、演示运行结果,并回答老师至少三个问题。如不能回答,则不通过考核。通过考核后,应根据两个题目的题目分析、编程思想、相关知识、流程图、算法设计(如有)、源代码及注释,完成实践课程报告,并打印后提交。老师根据平时考勤、演示结果、回答问题情况、实验报告情况打分。
定于第九周周四上午进行考核。请各位同学做好准备。
Shell编程部分:
1、设计一个程序cuts,它由标准输入读取数据,获取有第一个参数n和第二个参数m所限
定范围的数据,n和m都是整数,即从输入的字符串中抽取第n个字符至第m个字符之间的所有字符(包括这两个字符)并显示出来。
$ cuts 11 14
This is a test of cuts program(回车)
test(显示结果)
P145 4.18
#!/bin/bash
read -p "请输入一段内容:" TEXT
read -p "请输入两个整数,中间用空格分开:" num1 num2
echo $TEXT | cut -b $num1-$num2 2>/dev/null
2、利用for循环将当前目录下的.c文件移到指定的目录下,并按文件大小排序,显示移动
后指定目录的内容。
P144 4.12
#!/bin/bash
for file in `ls -1 /root/a | grep ".*.c"`
{
mv /root/a/$file /root/b
}
ls -lS /root/b
3、编写一个shell脚本,求斐波那契奇数列的前10项及总和。
P144 4.14
#!/bin/bash
i=1
j=0
for (( k=0; k<10; k++ ))
echo -n "$i "
let m=i
let i+=j
let j=m
done
echo ""
4、编写一个shell脚本,程序运行时,要求输入两个数字。然后判断数字的大小,如果两
个数字的和大于100,就输出“x+y>100”;如果两个数字的和小于等于100并且大于10,就输出“x+y>10”;如果x>y,则求出x除以y的余数并输出“x mod y = ?(把计算的值代替问号)”,否则求出y除以x的余数并输出“y mod x = ?”.
P127 例4.13
5、编写一个shell脚本,并利用函数实现数列求和运算。即主程序接受两个数字,分别作
为数列头和数列尾,如果第一个数字不小于第二个数字则输出“wrong number”,否则将这两个数字传递给函数;函数把这两个数字中间的数字加起来求和,并输出。
如:当输入 3 6时,函数计算3+4+5+6的值并输出。
#!/bin/sh
fun()
{
sum=0
for i in `seq $1 $2`
do
sum=`expr $i + $sum`
done
echo $sum
}
echo "Please input 2 number:"
read a b
expr $a + 0 1>/dev/null 2>&1
if [[ $? -ne 0 ]];then
echo "wrong number"
exit 1;
fi
expr $b + 0 1>/dev/null 2>&1
if [[ $? -ne 0 ]];then
echo "wrong number"
exit 1;
if [[ $a -ge $b ]];then
echo "wrong number"
exit 1;
fi
fun $a $b
6、编写特洛伊木马shell脚本。以文本方式登陆界面,接收用户输入的名字和密码。一旦
用户在这种伪装界面登陆,就获取用户名和密码,并保存在指定的文件中。接着睡眠几秒,然后显示录入错误的信息,使用户以为输入有误。最后在调用真正的登陆程序,允许用户正常登陆。
P107 例4.6
7、编写shell脚本,创建一个5个元素的数组,输出各个元素的值
8、编写一个脚本,用于统计所指定文件的行数总数。输出结果为各个文件的名字+行数,
以及总行数。
如:当输入./脚本名file1 file2,脚本计算file1和file2两个文件的总行数
#!/bin/bash
#statistics the raws of the files you input
usage()
{
echo "usage:please input >= two filenames"
}
totalline=0
if [ $# -lt 2 ]; then
usage
fi
while [ $# -ne 0 ]
do
line=`cat $1 |wc -l`
echo "$1:$line"
totalline=$[ $totalline+$line ]
shift
done
echo "--------"
echo "totalline: $totalline"
9、编写一个shell脚本,根据键盘输入的值,给出对应的提示;输入[A – Z ],输出Uppercase
Letter;输入[a-z],输出Lowercase Letter;输入[0-9],输出Digit;输入其他,输出Punctuation, whitespace, or other
#!/bin/bash
export LC_ALL=C
read a
while [ $a ]