linux中shell的循环

循环主要分为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~

猜你喜欢

转载自blog.csdn.net/weixin_40543283/article/details/85284286
今日推荐