栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 系统运维 > 运维 > Linux

实验三 shell 脚本实验

Linux 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

实验三 shell 脚本实验

需要完整报告请在我主页里面的资源下载

湖北汽车工业学院实验报告

实验三  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

结果:不能执行脚本。

原因: 因为输入命令有错误                        

方法二:以脚本名作为bash参数(格式:$bash  脚本名 [参数])

$bash mycal 回车

显示:

显示:

结果:

       

方法三:将shell脚本的权限设置为可执行,然后在提示符下直接执行。(用chmod命令)

$chmod a+x mycal     #把mycal设置为对所有用户都有“执行”权限。

        $PATH=$PATH:.  #将脚本所在的目录添加到命令搜索路径(PATH)中。

$mycal               #输入脚本名直接执行该脚本

显示:

显示:

结果:

注:cal 命令显示公园1~9999年中任意一年或任意一个月的日历。如果不带任何参数,则显示当前月份的日历。如果只有一个参数,则该参数被解释为年份。当有两个参数时,则第一个参数表示月份,第二个参数表示年份。两个参数之间应留有空格。年份要使用完整形式,如2006,不能写成06。

2.编写Shell脚本文件,要求从命令行接收数值参数,并计算这些参数的和。(1分)

参考程序:

$vi  OSsy3_3(进入vi环境输入下列脚本程序)

x=0         #累加器变量清零

for y in $*    #变量依次取位置参数的值,然后执行循环体中的命令表,至所有位置参数取完为止。

do

x=`expr $x + $y`   #计算表达式x+y,并把计算结果赋给x。(累加器x=x+y)

done

echo "The sum 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 MENUn"

echo -e "1. Current date and timen"

echo -e "2. User currently logged inn"

echo -e "3. Name of the working directoryn"

echo -e "4. Contents of the working directoryn"

    echo -e "5. Exitn"

echo -n "Enter selection:"

    while true

    do

    read sel

    if [[ "$sel" -lt 1 || "$sel" -gt 5 ]]

       then

        echo "Error input! Please input again:"

       else

 break

    fi

done     

case "$sel" in

  1) date;;

  2) who;;

  3) pwd;;

  4) ls;;

  5) exit;;

  *) echo -e "There is no selection $selectn";;

esac

  echo

done

执行脚本:

显示结果:

4. 编写Shell脚本文件,要求从命令行输入5个数,在屏幕上显示其中最大数和最小数。(思考:如果改成从键盘输入给变量,而不是从命令行给出,如何实现?)(2分)

COUNT=1

SUM=0

MIN=0

MAX=100

while [ $COUNT -le 5 ]; do

    read -p "请输入5个整数:" INT

    if [[ ! $INT =~ ^[0-9]+$ ]]; then

        echo "输入必须是整数!"

        exit 1

    elif [[ $INT -gt 100 ]]; then

        echo "输入必须是100以内!"

        exit 1

    fi

    SUM=$(($SUM+$INT))

    [ $MIN -lt $INT ] && MIN=$INT

    [ $MAX -gt $INT ] && MAX=$INT

    let COUNT++

done

echo "sum: $SUM"

echo "min: $MIN"

echo "max: $MAX"

5. 编写Shell脚本文件,要求输入自己生日的月份和日期,计算还有多少天是自己的生日,如果生日日期已过,给出提示信息。(2分)

#!/bin/sh

read -p "Input your birthday(YYYYmmdd):" date1

m=`date --date="$date1" +%m`   

d=`date --date="$date1" +%d`    

date_now=`date +%s`      

y=`date +%Y`            

birth=`date --date="$y$m$d" +%s`     

internal=$(($birth-$date_now))       

 if [ "$internal" -lt "0" ]; then           

     birth=`date --date="$(($y+1))$m$d" +%s`      

     internal=$(($birth-$date_now))       

 fi

awk -vinternal=$internal 'BEGIN{d=int(internal/60/60/24);h=int((internal-24*60*60*d)/3600);

print "There is : "d" days "h" hours."}'

三、实验总结和体会(1分)

答:在本次实验中我掌握了bash的基本语法在执行语句时根据shell脚本编程的文件设置参数,同时也需要熟悉shell脚本编程,根据题目需要来编写文件;最后掌握bash的建立和执行方式;本次实验收获很多,在课下也有练习,同时也感谢老师的辛勤付出,在今后的学习中也会更加努力。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/613797.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号