实验四  shell编程实验(二)
班级:         姓名:       学号:       上机时间   
任课教师:            实验教师:              实验成绩:     
一、实验目的
综合Linux常用命令和vi编辑器的使用,熟练掌握shell脚本编程。
二、实验注意事项
实验室内的实验环境与系统是共用设施,请不要在系统内做对系统或对其他用户不安全的事情。要求每个同学登录后系统后,要在自己的家目录下创建一个属于自己的子目录(以自己(拼音)名字或学号)。以后所有工作都要在自己的目录内进行。建议以后的实验都在同台计算机上做,这样可以保持连续性。
三、实验内容
1. 编写一个脚本,求斐波那契数列的前10项及总和。
num1=1
num2=1
echo -n “$num1+$num2”
sum=2
for((i=1;i<=8;i++))
do
tmp=$(expr $num1 + $num2)
echo -n “+$tmp”
((num1=num2))
((num2=tmp))
sum=$(expr $sum + $tmp)
done
echo “=$sum”
2.编写一个脚本,求一个数的逆序。
echo -n please input num:
read num
echo -n The num is
while [ $num -gt 0 ]
do
sd=$(($num % 10))
echo -n "$sd"
num=$(($num/10))
done
echo
3.设计一个Shell程序,在用户主目录下建立一个userdata目录,在此目录下再建立5个目录,即user1~user5,并设置每个目录的权限,其中其他用户的权限为:读;文件所有者的权限为:读、写、执行;文件所有者所在组的权限为:读、执行。(注意:最后删除自己所建立的目录,恢复原样,以便后面同学做此实验)
mkdir -m 754 /home/userdata
i=1
temp=/home/userdata/user
while[ $i -le 5 ]
do
mkdir -m 754 $temp$i
let”i=i+1”#
done
4.用Shell编程,判断一文件是不是普通文件,如果是将其拷贝到 /home/student/test 目录下,用命令查看test目录内容,最后再删除test目录。
mkdir -m 777 /home/test
echo “Input file name:”
read FILENAME
if [ -f “$FILENAME” ]
then
cp $FILENAME /home/test
ls /home/test
cd test
rm $FILENAME
cd .
ls
else
echo”The FILENAME is not a regular file!”
fi
5.编程实现简单计算器。要求 用户输入一个表达式并输入结果,程序会判断用户输入的结果是否正确,并给出提示。直到 用户输入‘q’时,才退出执行。
shell最简单脚本参考程序:
#!/bin/bash
#fileName:first
#note:This is the first title
#function:input an expretion and the answer, I will tell you right or wrong
#        You can try it as many times as you like.
echo Hello!  @_@
echo Welcom to the calculate testing!
echo You can input an expretion such as 2*2 or 3+1, and input the answer
echo I will tell you whether you are right or wrong.
echo You can input 'q' to exit.
echo "Now let's begin!"
number1=0;
while [ "$number1" != "q" ]
do
    echo Input the first number:
    read number1
    echo Input the operator type:
    read type
    echo Input the second number:
    read number2
    echo Input the answer:
    read yourAnswer
   
    case $type in
        +) myAnswer=`expr $number1 + $number2`;;
        -) myAnswer=`expr $number1 - $number2`;; 
        \*)myAnswer=`expr $number1 \* $number2`;;
        /)   
        if [ $number2 -eq 0 ]
        then
            echo "Sorry! :-("
            echo "0 cannot be the divisor"
            continue
        else
            myAnswer=`expr $number1 / $number2`
        fi
    ;;   
    *) echo Error!;;
    esac
    if [ $myAnswer -eq $yourAnswer ]
    then
        echo ":-)" Congratulations!
        echo Your are right!
        echo Input 'q' to exit or try again!
    else
        echo ":-(" Sorry!
        echo You are wrong!
    echo "The right answer is:"
        echo "$number1 $type $number2 = $myAnswer"
        echo Input 'q' to exit or try again!   
    fi
  # echo Input the first number:
  # read number1
done
要求:请同学仔细分析该程序,理解其中的语句及用法,写出程序分析及总结。
总结:
四、实验报告要求
1.列出调试通过程序的清单,并加注释。
2. 写出程序运行步骤及结果。
3.总结上机调试过程中所遇到的问题和解决方法及感想。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。