Linux程序设计实验报告6参考答案课程名称: Linux 实验名称:Linux系统应用开发
1.下面给出了一个SHELL程序,试对其行后有#(n)形式的语句进行解释,并说明程序完成的功能。#!/bin/bash #(1)dir=$1 #(2)if [ -d $dir ] #(3)then cd $dir #(4) for file in * doif [-f $file ] #(5)then cat $file #(6)echo “end of file $file” fi done elseecho “bad directory name $dir” fi
#(1)使用/bin/bash解释脚本#(2)将位置变量1赋值给变量dir#(3)如果dir所指为目录#(4)将当前目录改为dir#(5)如果循环变量file所指是普通文件#(6)显示文件file的内容 程序功能:若命令行参数是一个合法目录则显示该目录下所有普通文件的内容,否则显示错误的目录名信息。
2、某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:在下午4 :50删除/abc目录下的全部子目录和全部文件。在每周日凌晨零点零分定期备份/user/backup到/tmp目录下。使用crontab –e 命令创建crontab文件。(1)在下午4 :50删除/abc目录下的全部子目录和全部文件。50 16 * * * rm -r /abc/*(2)在每周日凌晨零点零分定期备份/user/backup到/tmp目录下。0 0 * * sun cp –r /user/backup /tmp
3、编写一个名为mul的脚本程序,参数为一个大于20的正整数。先检查参数是否符合要求。如果不符合要求,请给出提示”number is wrong”;如果符合要求,分别输出其与1到10的乘积。#!/bin/bashif [ $1 -gt 20 ] then n=1 m=1 while [ $n -le 10 ] dom=$(expr $1 \* $n)echo "$n $m"n=$(expr $n + 1) doneelse echo "number is wrong"fi
4、编写一个shell脚本,能够显示下面序列的前25个数字。0,1,1,2,3,5,8,13…,前二个数字之和为第三个数字,即著名的Fibonacci序列。#!/bin/bashn=0 echo "$n "m=1echo "$m "t=1a=2while [ $a -lt 25 ]do t=$(expr $n + $m) echo "$t " a=$(expr $a + 1) n=$m m=$tdone
5、用shell编写小九九乘法表程序,程序执行结果如下:#! /bin/sh –for i in 1 2 3 4 5 6 7 8 9dofor j in 1 2 3 4 5 6 7 8 9doif ( test $j -le $i ) thenecho -ne `expr $i \* $j` "\t"elseechobreak fi donedone
三、1、写一个shell 脚本,检查给出的串是否为回文(palindrome)。#! /bin/bashecho "Enter string"read strlen=`echo $str | wc -c`len=`expr $len - 1`l=`expr $len / 2`ctr=1flag=0while test $ctr -le $ldoa=`echo $str | cut -c$ctr`b=`echo $str | cut -c$len`if test $a -ne $bthen flag=1breakfictr=`expr $ctr + 1`len=`expr $len - 1`doneif test $flag -eq 0then echo "String is