循环主要分为3种,借几个脚本来理解一下
1.for
1)10秒倒计时脚本
#!/bin/bash
for ((a=10;a>0;a--))
do
echo -n " TIME $a"
echo -ne "\r \r"
sleep 1
done
2)如果想要自己输入的时间为倒计时呢
#!/bin/bash
read -p "please input the time you want count,eg 01 10 " i j
a=$i*60+$j
for ((b=$a;b>0;b--))
do
echo -n " TIME $[b/60]:$[b%60] "
echo -ne "\r"
sleep 1
done
3)九九乘法表
#!/bin/bash
##打印9*9乘法表
#1*1=1
#2*1=2 2*2=4
#3*1=3 3*2=6 3*3=9
for i in $(seq 9)
do
for j in $(seq $i)
do
echo -ne "$i*$j=$(($i*$j))\t"
done
echo -e "\n"
done
4)嵌套循环
#!/bin/bash
for((a=1;a<=3;a++))
do
echo "Starting outside loop: $a"
for((b=1;b<=3;b++))
do
echo "Inside loop: $b"
done
done
2.if-else
1)如果用话存在输出,hello+用户名
#!/bin/bash
user=kiosk
if grep $user /etc/passwd;then
echo "Hello $user"
fi
2)检测student用户是否存在,存在显示家目录的内容
#!/bin/bash
user=student
if grep $user /etc/passwd;then
echo "The files for user $user are:"
ls -a /home/$user
else
echo "$user not exist!"
fi
3)查看是否被允许登陆
#!/bin/bash
if [ "$1" == "student" ];then
echo "Welcome $1"
elif [ "$1" == "westos" ];then
echo "Welcome $1"
elif [ "$1" == "kiosk" ];then
echo "Welcome $1"
elif [ "$1" == "linux" ];then
echo "Welcome $1"
else
echo "You are not allowed!"
fi
3.while
1)新建westos{1..20}用户,并统一设置密码
#!/bin/bash
PREFIX="westos"
i=1
while [ $i -le 20 ]
do
useradd -r ${PREFIX}$i &> /dev/null
echo "123456" | passwd --stdin ${PREFIX}$i &> /dev/null
((i++))
done
2)隔2秒输出依次系统启动时间
#!/bin/bash
while true
do
uptime
sleep 2
done
4.case
1)如果是允许用户输出允许,不是的话,输出sorry
#!/bin/bash
case $1 in
student|kiosk|linux|westos)
echo "Welcome,$1"
;;
*)
echo "sorry!"
;;
esac
5.练习题
运用本节所学内容,写一个交互式程序
#!/bin/bash
while true
do
echo -e "
\033[31m A 显示主机IP \033[0m
\033[32m B 显示磁盘剩余空间 \033[0m
\033[33m C 显示系统运行时间 \033[0m
\033[34m Q 退出系统 \033[0m
"
read -p "请输入你的选择:" char
case $char in
a|A)
ifconfig br0 | grep "inet " | awk '{print $2}'
;;
b|B)
df -h | awk 'NR==2{print "剩余空间大小为:"$4}'
;;
c|C)
uptime |awk '{print $3}' | awk -F, '{print $1}' | awk -F: '{print "系统已经运行了"$1"小时"$2"分钟"}'
;;
q|Q)
exit 0
;;
esac
done
OK~