Shell 脚本基础练习题分享

案例1:让用户输入两个数字,显示较大的数字
#!/bin/bash
read -p "请输入第一个数字" num1
read -p "请输入第二个数字" num2
if [ $num1 -gt $num2 ];then
    echo $num1
else
    echo $num2
fi
案例2:让用户输入两个数字,判断两个数字是否相同
#!/bin/bash
read -p "请输入第一个数字" num1
read -p "请输入第二个数字" num2
if [ $num1 -eq $num2 ];then
    echo "相同"
else
    echo "不相同"
fi
案例3:让用户输入1个数字,如果数字大于5就输出ok
#!/bin/bash
read -p "请输入第一个数字" num1
if [ $num1 -gt 5 ];then
    echo "ok"
fi
案例4:让用户输入1个数字,如果数字大于5就输出ok,否则输出error
#!/bin/bash
read -p "请输入第一个数字" num1
if [ $num1 -gt 5 ];then
    echo "ok"
else
    echo "error"
fi
案例5:让用户输入1个数字
如果数字大于等于90,输出A
如果数字大于等于80,输出B
如果数字大于等于70,输出C
如果数字大于等于60,输出D
否则输出E
#!/bin/bash
read -p "请输入一个数字:" num
if [ $num -ge 90 ];then
    echo "A"
elif [ $num -ge 80 ];then
    echo "B"
elif [ $num -ge 70 ];then
    echo "C"
elif [ $num -ge 60 ];then
    echo "D"
else
    echo "E"
fi
案例6:让用户输入一个姓名,判断姓名是否为tom
#!/bin/bash
read -p "请输入你的姓名:" name
if [ $name == "tom" ];then
    echo "tom"
else
    echo "不是tom"
fi
案例7:让用户输入一个文件,判断这个文件是否存在,如果存在,提示文件存在,如果文件不存在, 提示无此文件
#!/bin/bash
read -p "请输入一个文件:" file
if [ -e $file ];then
    echo "文件存在"
else
    echo "文件不存在"
fi
案例8:让用户输入一个用户,判断这个用户是否存在
#!/bin/bash
read -p "请输入一个姓名:" name
id $name &>/dev/null # 如果用户存在,则这个命令会执行成功;如果用户不存在,则这么命令会执行失败

num=$? # 如果命令执行成功,那么$?的值是0,如果命令执行失败,$?值是非0
if [ $num -eq 0 ];then
    echo "用户 $name 是存在的"
else
    echo "用户 $name 是不存在的"
fi
案例9:让用户输入一个用户名,判断用户是否存在,如果存在,显示这个用户的uid,如果不存在,就 创建这个用户
#!/bin/bash
read -p "请输入用户名" user
id $user &>/dev/null
if [ $? -eq 0 ];then
        echo `id $user | awk -F " " '{print $1}'`
else
        useradd $user
fi
案例10:让用户输入一个文件,判断这个文件的类型
如果是目录,就提示,这个文件是目录
如果文件是一般文件,就提示这个文件是一般文件,然后再显示这个文件中有多少#开头的行
这个文件不存在,就创建这个文件
#!/bin/bash
read -p "请输入文件名:" file
if [ -d $file ];then
    echo "$file是一个目录"
elif [ -f $file ];then
    echo "$file是一个一般文件"
    num=`grep "^#" $file | wc -l`
    echo "这个文件中有$num个#开头的行"
else
    echo "文件不存在"
fi
案例11:让用户输入一个用户名,如果这个用户名是存在的,那么就给用户打印一个菜单,让用户来选
uid:显示这个用户的uid
gid:显示这个用户的gid
home:显示这个用户的家目录
#!/bin/bash
read -p "请输入姓名:" name
id $name &>/dev/null
num=$?
if [ $num -eq 0 ];then
    echo "+-----------------------------------------------------------+"
    echo "|uid: 显示用户的uid |"
    echo "|gid:显示用户的gid |"
    echo "|home:显示用户的家目录 |"
    echo "+-----------------------------------------------------------+"
    read -p "请选择:" choice
    if [ $choice == "uid" ];then
        uid=`id -u $name`
        echo "用户的uid是$uid"
    elif [ $choice == "gid" ];then
        gid=`id -g $name`
        echo "用户的gid是$gid"
    elif [ $choice == "home" ];then
        home=`grep "\<$name\>" /etc/passwd | awk -F ":" '{print $6}'`
        echo "$name的家目录是$home"
    else
        echo "输入错误"
    fi
else
    echo "无此用户"
fi

案例12:给用户打印一个菜单,然后根据用户的选择进行响应的操作

1)显示磁盘信息
2)显示内存信息
3)信息网卡信息
4)退出系统
#!/bin/bash
echo "disk)显示磁盘信息"
echo "mem)显示内存信息"
echo "net)信息网卡信息"
echo "exit)退出系统"
read -p "请选择你想执行的操作:" num
case $num in
"disk")
    echo "磁盘信息如下:"
    df -h | grep "/$"
    ;;
"mem")
    echo "内存信息如下"
    free -m
    ;;
"net")
    echo "网络信息如下"
    ip addr s ens33 | grep "inet\>"
    ;;
"exit")
    echo "bye"
    exit 0
    ;;
*)
    echo "你输入了错误的内容"
    ;;
esac
案例13:扫描192.168.31.1-15之间哪个主机是在线的
#!/bin/bash
for num in {80..95}
do
    ip="192.168.31.$num"
    ping -c1 -w1 $ip &>/dev/null
    m=$? #如果m是0,ping成功了,也就是主机在线
    if [ $m -eq 0 ];then
        echo -e "主机 $ip \033[31m在线\033[0m"
    else
        echo -e "主机 $ip \033[34m离线\033[0m"
    fi
done
案例14:检查用户tom是否登录了系统
如果tom没有登录,就等5s后再次检查
如果tom登录了系统,就给另一个终端【/dev/pts/1】发送一个信息,告知tom登录了,然后结束
程序
who命令,可查看当前所有登录了系统的用户名
向/dev/pts/1发送信息命令格式:echo“xxx”> /dev/pts/1
#!/bin/bash
while true
do
    who | grep "tom" &>/dev/null
    num=$?
    if [ $num -eq 0 ];then
        echo "tom已经登录系统" >/dev/pts/1
        break
    else
        echo "tom 尚未登录系统"
        sleep 5
    fi
done
案例15:输出文件/etc/inittab的每行有多少个字符
#!/bin/bash
n=1
while read line
do
    echo "第$n行有`echo $line | wc -c`个字符"
    n=$[n+1]
done</etc/inittab

 案例16:给用户打印一个菜单,然后根据用户的选择进行相应的操作

1)显示磁盘信息
2)显示内存信息
3)信息网卡信息
4)退出系统
要求:
1:将菜单定义到函数中
2:将每个功能定义到函数中

#!/bin/bash
# 定义打印菜单的函数
showMenu(){
    echo "+----------------------------+"
    echo "|1: 显示磁盘信息 |"
    echo "|2: 显示内存信息 |"
    echo "|3: 显示网卡信息 |"
    echo "|4: 退出系统 |"
    echo "+----------------------------+"
}
# 定义获取磁盘信息的函数
getDisk(){
    usePercent=`df -h | grep "/$" | awk -F " " '{print $5}'`
    echo "磁盘使用率是 $usePercent"
}
# 定义获取内存信息的函数
getMem(){
    memLeft=`free -m | grep "Mem" | awk -F " " '{print $7}'`
    swapUsed=`free -m | grep "Swap" | awk -F " " '{print $3}'`
    echo "内存可用空间大小是 $memLeft, 交互分区使用了 $swapUsed MB"
}
# 定义获取网络信息的函数
getNet(){
    loAddr=`ip addr s lo | grep "inet\>" | awk -F " " '{print $2}'`
    ens33Addr=`ip addr s ens33 | grep "inet\>" | awk -F " " '{print $2}'`
    echo "lo网卡的地址是:$loAddr, ens33网卡的地址是:$ens33Addr"
}
#=============================================================
# 调用函数,打印菜单
showMenu
read -p "请选择:" userInput
# 判断用户的输入是几
if [ $userInput -eq 1 ];then
    getDisk
elif [ $userInput -eq 2 ];then
    getMem
elif [ $userInput -eq 3 ];then
    getNet
elif [ $userInput -eq 4 ];then
    exit 0
else
    echo "你输入错了"
fi

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值