案例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