湖北汽车工业学院实验报告
实验三  shell 脚本实验
一、实验目的
1.掌握bash的基本语法。
2.掌握bash的建立和执行方式。
3熟悉shell脚本编程。
二、实验内容
1编写Shell脚本文件,该文件的功能:从键盘输入年月,然后自动显示该年份下该月的日历,然后再显示系统当前的日期和时间。要求用3种不同方式执行该脚本(3分)
参考程序:
$vi mycal(进入vi环境输入下列脚本程序)
          echo Please input year:
        read year      #从键盘读入年份给year变量
echo Please input month:
        read month      #从键盘读入月份给month变量
        cal $month $year
        date
:wq!回车(保存文件并退出vi)
执行脚本方法:
方法一:输入定向到shell脚本(格式:$bash<脚本名)
        $bash<mycal
结果:不能执行脚本。
原因: 用输入重定向方式让shell从给定文件中读入命令行,并进行相应处理。这种方式不能从命令行读入参数,包括程序中有从键盘读入参数。
方法二:以脚本名作为bash参数(格式:$bash  脚本名 [参数])
        $bash mycal 回车
显示:   
方法三:将shell脚本的权限设置为可执行,然后在提示符下直接执行。(用chmod命令)
        $chmod a+x mycal    #把mycal设置为对所有用户都有“执行”权限。
        $PATH=$PATH:.        #将脚本所在的目录添加到命令搜索路径(PATH)中。
        $mycal              #输入脚本名直接执行该脚本
显示:   
2编写Shell脚本文件,要求从命令行接收数值参数,并计算这些参数的和。(1分)
参考程序:
$vi  OSsy3_3(进入vi环境输入下列脚本程序)
x=0        #累加器变量清零
for y in $*    #变量依次取位置参数的值,然后执行循环体中的命令表,至所有位置参数取完为止。
do
x=`expr $x + $y`  #计算表达式x+y,并把计算结果赋给x。(累加器)
done
echo "The max is:$x"
:wq!回车(保存文件并退出vi)
执行脚本:
显示结果:(可截屏)
3.编写Shell脚本文件,使用case结构创建一个简单的菜单,屏幕显示菜单:
a. Current date and time
b. User currently logged in
c. Name of the working directory
d. Contents of the working directory
Enter a,b,c or d:
根据用户输入选项做相应操作,要求可以连续选择直到想退出时才退出。(1分)
参考程序:
while true
  do
        echo -e "\n    COMMAND MENU\n"
        echo "1. Current date and time"
        echo "2. User currently logged in"
        echo "3. Name of the working directory"
        echo "4. Contents of the working directory"
        echo -e "5. Exit\n"   
        echo -n "Enter selection:"
        while ture
        do   
            read sel
            if ["$sel" -lt 1 || "$sel" -gt 5]
            then
                  echo "Error input! Please input again:"
            else
                break
            fi
        done   
        case "$sel" in
shell最简单脚本
        1) date;;
        2) who;;
        3) pwd;;
        4) ls;;
        5) exit;;
        *) echo -e "There is no selection $select\n";;
        esac
        echo
done
执行脚本:
显示结果:
4. 编写Shell脚本文件,要求从命令行输入5个数,在屏幕上显示其中最大数和最小数。(思考:如果改成从键盘输入给变量,而不是从命令行给出,如何实现?)(2分)
#! /bin/bash
printf "Enter 5 number: "
read
max=$(echo "$REPLY" | tr ' ' '\n' | sort -rn | head -n1)
min=$(echo "$REPLY" |  tr ' ' '\n' | sort -rn | tail -n1)
echo "max:  $max"
echo "min:  $min"
5. 编写Shell脚本文件,要求输入自己生日的月份和日期,计算还有多少天是自己的生日,如果生日日期已过,给出提示信息。(2分)
#!/bin/bash
read -p "please input your birthday(mmdd):" birthday
today=`date +%m%d`
if [ "$birthday" == "$today" ];then
        echo "happy birthday!"
elif [ "$birthday" -gt "$today" ];then
        year=`date +%Y`
        total_day_s=$((`date --date="$year$birthday" +%s`-`date +%s`))
        total_day=$(($total_day_s/60/60/24+1))
        echo "your birthday is $total_day days away"
else
      echo "birthday pass away!"
fi
三、实验总结和体会(1分)
在本次实验中,了解了基本的shell脚本编程的知识,比如:shell变量分为临时变量、位置变量、预定义变量和环境变量。Shell脚本编程有一些命令,常用的有read和echo等等,通过亲手实验了解到shell脚本编程和c语言编程还是有一定的区别的,我学到的有if开头,需要用fi结束。Caseesac等等。最大收获是练习了bash命令的使用和基本脚本的编写。

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