实验五 shell脚本编程

项目

内容

这个作业属于哪个课程

<首页 - 2021春季Linux系统与应用 - 南昌航空大学 - 班级博客 - 博客园 (cnblogs.com) >

这个作业的要求在哪里

实验五 shell脚本编程 - 作业 - 2021春季Linux系统与应用 - 班级博客 - 博客园 (cnblogs.com)>

学号-姓名

<18041506-郑嘉欣>

作业学习目标

1.了解shell脚本的概念及使用
2.
掌握
shell脚本语言的基本语法
3.
学习简单的
shell脚本编程

1.让用户输入一个字符串,如果用户输入的是hello,请输入hello 用户姓名首字母缩写,否则输出请输入hello

 

 

 

 

 

 2.编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。

 

 

 

 3.编写脚本计算1-100之间的所有奇数和。

 

 

 

 4.编写脚本,判断键盘输入整数是否为质数。

 

 

 

 5.模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作

 

 

 

 

 

 6.编写脚本实现计算用户输入参数数字的和,分别用shiftfor循环实现。

 

 

 

 

 

 

 

 7.编写脚本,生成一个phonenumber.txt文件,文件内容为随机产生以139开头的手机号

 

 

 

 8.在第7题产生的1000个电话号码中抽取5位幸运号码,并显示,要求只显示前3三位数字和后4位数字,中间四位用*代替。

 

 

 

 9.使用until语句批量创建10个用户,要求stu1-stu5用户的UID分别为2001-2005stu6-stu10用户的家目录分别在/rhome/stu6-/rhome/stu10

 

 10.编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入,最后根据用户输入的信息输出相应的内容。

 

 

 

 

 

 

 

 

 

 

 

 

项目

内容

这个作业属于哪个课程

<班级课程的主页链接 >

这个作业的要求在哪里

作业要求链接接地址>

学号-姓名

<18041506-郑嘉欣>

作业学习目标

1.了解shell脚本的概念及使用
2.
掌握
shell脚本语言的基本语法
3.
学习简单的
shell脚本编程

1.让用户输入一个字符串,如果用户输入的是hello,请输入hello 用户姓名首字母缩写,否则输出请输入hello

#!/bin/bash

read -p '请输入一个字符串:' str   #通过read定义变量str,储存用户输入的字符串

if[ $str ="hello"]          #$str调用str内容,判断是否等于hello

then

       echo "hello  zjx"

else

       echo "请输入hello"

fi

2.编写一脚本,判断输入用户名是否存在,输出结果只能是存在该用户或者不存在该用户,不能有其他数据输出。

#!/bin/bash

read -p '请输入用户名:' user_name   #通过read定义变量user_name,储存用户输入的用户名

id $user_name &>/dev/null       #查询用户名是否存在,将输出结果送入/dev/null

if[ $?-eq 0]                  #判断返回值是否为0

then

       echo "存在用户$user_name"

else

       echo "不存在用户$user_name"

fi

3.编写脚本计算1-100之间的所有奇数和。

#!/bin/bash

 

SUM=0

for i in{1..100..2}             #for循环,从1100,步长为2

do

       let SUM=$SUM+$i              #调用SUMi的值相加,并将值赋给SUM

done

echo "1-100之间的所有奇数和为: $SUM"

4.编写脚本,判断键盘输入整数是否为质数。

#!/bin/bash

 

read -p '请输入一个正整数:' num

[ $num -eq 1]&& echo '$num是质数'&&exit      #判断输入的值是否为1,若是,则输出1是质数

[ $num -eq 2]&& echo '$num是质数'&&exit

for i in`seq 2 $[$num-1]`                    #for循环,i2num-1

do

       [ $[$num%i]-eq 0]&& echo "$num不是质数"&&exit  #num/i=0,则输出$num不是质数

done

echo "$num是质数"&&exit

5.模拟一个多任务维护界面,当执行程序时先显示总菜单,然后进行选择后做相应的维护监控操作

#!/bin/bash

cat <<-EOF                   #cat查看,EOF结束

h      显示命令帮助

       f      显示磁盘分区

       d      显示磁盘挂载

       m      查看内存使用

       u      查看系统负载

       q      退出程序

EOF

whiletrue

do

       read -p "请选择需要操作的内容(help h):" action

       case $action in

              h)

                     cat <<-EOF

                     h      显示命令帮助

                            f      显示磁盘分区

                            d      显示磁盘挂载

                            m      查看内存使用

                            u      查看系统负载

                            q      退出程序

                     EOF

                     ;;                                                  

              f)

                     lsblk

                     ;;

              d)

                     df -h

                     ;;

              m)

                     free -m

                     ;;

              u)

                     uptime

                     ;;

              q)

                     exit

                     ;;

       esac

       done

6.编写脚本实现计算用户输入参数数字的和,分别用shiftfor循环实现。

#!/bin/bash

SUM=0

while[ $# -ne 0 ]    #当参数个数不为0时,循环

do

       let SUM=$SUM+$1

       shift             #参数左移一位

done

echo SUM=$SUM

#!/bin/bash

SUM=0

for i

do

       let SUM=SUM+$i

done

echo SUM=$SUM

 

 

7.编写脚本,生成一个phonenumber.txt文件,文件内容为随机产生以139开头的手机号1000个,每个手机号占一行。

#!/bin/bash

file=./phonenumber.txt    #将文件地址赋予file

for((i=1;i<=1000;i++))

do

       n1=$[ $RANDOM%10]     #随机产生0~910个数字

       n2=$[ $RANDOM%10]

       n3=$[ $RANDOM%10]

       n4=$[ $RANDOM%10]

       n5=$[ $RANDOM%10]

       n6=$[ $RANDOM%10]

       n7=$[ $RANDOM%10]

       n8=$[ $RANDOM%10]

       echo "139$n1$n2$n3$n4$n5$n6$n7$n8">> $file

done

 

8.在第7题产生的1000个电话号码中抽取5位幸运号码,并显示,要求只显示前3三位数字和后4位数字,中间四位用*代替。

#!/bin/bash

phone=./phonenumber.txt

for((i=1;i<=5;i++))

do

       line=`wc -l $phone | cut -d' ' -f1`               #查看文件内容行数

       luck_line=$[RANDOM%$line+1]                       #产生随机行

       luck_number=`head -$luck_line $phone | tail -1`   #取出随机号码

       echo "139****${luck_number:7:4}"                  #显示号码,中间4位用*代替

       echo $luck_number >> luck.txt

       sed -i "/$luck_number/d" $phone                   #删除原文件中被选中的号码

done

 

9.使用until语句批量创建10个用户,要求stu1-stu5用户的UID分别为2001-2005stu6-stu10用户的家目录分别在/rhome/stu6-/rhome/stu10

#!/bin/bash

if[-d /rhome ]

then

       echo "/rhome目录已存在"

else

       mkdir /rhome

       echo "/rhome不存在,已创建成功"

fi

i=1

until[ $i -gt 5]                   #判断i的值是否大于5

do

       useradd stu$i -u $[2000+$i]&& echo "stu$i:123"|chpasswd #创建用户stu1-stu5UID为2001-2005

       let i++

done

until[ $i -gt 10]

do

       useradd stu$i -d /rhome/stu$i && echo "stu$i:123"|chpasswd

       let i++

done

 

 

 

10.编写脚本收集用户输入的基本信息(姓名,性别,年龄),如果用户不输入一直提示用户输入,最后根据用户输入的信息输出相应的内容。

#!/bin/bash

input_fun(){

       input_var=""                      #定义变量为空

       output_var=$1                     #$1为函数含参

       while[-z $input_var ]           #变量为空时进入循环

       do

              read -p "$output_var" input_var

       done

       echo $input_var

}

 

name=`input_fun 请输入你的姓名:`

sex=`input_fun 请输入你的性别:`

age=`input_fun 请输入你的年龄:`

 

echo "你的姓名是$name"

echo "你的性别是$sex"

echo "你的年龄是$age"

 

 

 

posted @ 2021-06-09 19:50  zbiaji  阅读(294)  评论(0编辑  收藏  举报