实验五 shell脚本编程

 实验五 shell脚本编程

项目

内容

这个作业属于哪个课程

<班级课程的主页链接 >

这个作业的要求在哪里

<作业要求链接接地址>

学号-姓名

17043227-张健

作业学习目标

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

首先建立文件夹exp5,操作基于exp5操作,结果如下:

 

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

复制代码
#!/bin/bash
read -p '请输入一个字符串:' str
if [ $str = "hello" ]
then
    echo "hello  ZJ"
else
    echo "请输入hello"
fi
复制代码

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

复制代码
#!/bin/bash 

read -p '请输入用户名:' user_name
id $user_name &> /dev/null 
if [ $? -eq 0 ] 
then
    echo "存在用户$user_name" 
else
    echo "不存在用户$user_name" 
fi
复制代码

 

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

复制代码
#!/bin/bash 

SUM=0 

for i in {1..100..2} 
do 
    let SUM=$SUM+$i 
done

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

 

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

复制代码
#!/bin/bash

read -p '请输入一个正整数:' num
[ $num -eq 1 ] && echo '$num是质数'&&exit
[ $num -eq 2 ] && echo '$num是质数'&&exit
for i in `seq 2 $[$num-1]`
do
    [ $[$num%i] -eq 0 ] && echo "$num不是质数"&&exit
done
echo "$num是质数"&&exit
复制代码

 

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

复制代码
#!/bin/bash
cat <<-EOF
    h    显示命令帮助
    f    显示磁盘分区
    d    显示磁盘挂载
    m    查看内存使用
    u    查看系统负载
    q    退出程序
EOF
while true
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.编写脚本实现计算用户输入参数数字的和,分别用 shift 和 for 循环实现。

(1)使用shift循环

复制代码
#!/bin/bash
SUM=0
while [ $# -ne 0 ]
do
    let SUM=$SUM+$1
    shift
done
echo SUM=$SUM
复制代码

 

 (2)使用for循环。

复制代码
#!/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
for ((i=1;i<=1000;i++))
do
    n1=$[ $RANDOM%10]
    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}"
    echo $luck_number >> luck.txt
    sed -i "/$luck_number/d" $phone
done
复制代码

 

9.使用until 语句批量创建10个用户,要求stu1-stu5 用户的UID分别为2001-2005 , tu6-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 ]
do
    useradd stu$i -u $[2000+$i] && echo "stu$i:123" | chpasswd && echo "stu$i创建成功!"
    let i++
done
until [ $i -gt 10 ]
do
    useradd stu$i -d /rhome/stu$i && echo "stu$i:123" | chpasswd && echo "stu$i创建成功!"
    let i++
done
复制代码

 

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

复制代码
#!/bin/bash
input_fun(){
    input_var=""
    output_var=$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 @ 2020-04-13 18:07  白发仙  阅读(275)  评论(0)    收藏  举报