期末考核题目

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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 ]

相关文档
最新文档