sweetdyf

导航

实验五 shell脚本编程

实验五 shell脚本编程

项目 内容
这个作业属于哪个课程 班级课程主页链接
这个作业的要求在哪里 作业要求链接接地址
学号-姓名 17041501-戴一凡
作业学习目标 1. 了解shell脚本的概念及使用
2.掌握shell脚本语言的基本语法
3.学习简单的shell脚本编程
  1. 让用户输入一个字符串,如果用户输入的是hello,请输入hello 用户姓名首字母缩写,否则输出请输入hello

    #!/bin/bash
    read -p "please input a string:" str
    if [ "$str" = "hello" ]
    then
    echo "hello dyf"
    else
    echo "please input hello"
    fi
    

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

     #!/bin/bash
    read -p '请输入用户名:' user_name
    id $user_name &> /dev/null
    if [ $? -eq 0 ]
    then
    echo "存在用户$user_name"
    else
    echo "不存在用户$user_name"
    fi
    
    user_name    #用户名
    &> /dev/null #输出
    [$? -eq 0]   #赋值为整数时用-eq,判断该用户名是否存在
    

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

     #!/bin/bash
    SUM=0
    for i in {1..100..2}
    do
    let SUM=$SUM+$i
    done
    echo "1-100之间的所有奇数和为: $SUM"
    
    1..100..2 #1到100的奇数
    SUM=0 #定义一个变量来保存奇数的和
    

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

    #!/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
    
    for i in `seq 2 $[$num-1]`  #i取2~num-1
    $[$num%i] -eq 0  #当前数字num除以i,若能除尽,则不为质数
    

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

    #!/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
    
    
    cat <<-EOF...EOF ##一起输出,加上-结尾的EOF不用顶行写
    

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

    #!/bin/bash
    sum=0
    while [ $# -ne 0 ]
    do
    let sum=$sum+$1
    shift
    done
    echo sum=$sum
    

    shift ##使本次参数向左移动,默认移动一位,可以使用shift 2移动两位
    

    #!/bin/bash
    sum=0
    for i
    do
    let sum=$sum+$i
    done
    echo sum=$sum
    

  1. 编写脚本,生成一个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
    

  1. 在第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
    

  1. 使用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 ]
    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
    

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

    #!/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 on 2020-04-12 21:53  sweetdyf  阅读(232)  评论(0编辑  收藏  举报