Linux实验报告(实验四) shell编程实验
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验四 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’时,才退出执行。
参考程序:
#!/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
要求:请同学仔细分析该程序,理解其中的语句及用法,写出程序分析及总结。