linux中shell的if条件和for及while循环

if语句

    if简单示例

#!/bin/bash
user=kiosk
if grep $user /etc/passwd;then
    echo "Hello $user"
fi

if date;then
    echo "Hello date"
fi

   

    if-else简单示例

#!/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

 

    if-elif-else简单示例

#!/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

 

二、 for循环

    生成1-5序列

第一种:
[root@localhost mnt]# awk 'BEGIN{for(i=1;i<=5;i++){print i}}'
1
2
3
4
5

第二种:
[root@localhost mnt]# vim for1.sh
for NUM in `seq 5`
do
     echo $NUM
done
[root@localhost mnt]# sh for1.sh
1
2
3
4
5

第三种:
[root@localhost mnt]# vim for3.sh
for ((A=1;A<=5;A++))
do
   echo $A
done
[root@localhost mnt]# sh for3.sh
1
2
3
4
5
第四种:
[root@localhost mnt]# seq 5    ##seq命令可以直接生成
1
2
3
4
5

 

    生成奇数序列

[root@localhost mnt]# vim for2.sh
for NUM in `seq 1 2 10`
do
     echo $NUM
done
[root@localhost mnt]# sh for2.sh
1
3
5
7
9
    实例练习:

    检测多台主机网络的通断

[root@localhost mnt]# vim ping.sh
#for ((a=1;a<60;a++))    ###三种写法任选一种
#for a in `seq 60`
for a in {1..60}
do
    ping -c1 -w1 172.25.254.$a &> /dev/null && echo 172.25.254.$a is up || echo 172.25.254.$a is down
done

 

    10s倒计时

[root@localhost mnt]# vim time.sh
#!/bin/bash
for ((a=10;a>0;a--))
do
    echo -n " TIME $a "    ##注意空格
    echo -ne "\r"
    sleep 1
done

 

    用户输入分和秒,开始倒计时

[root@localhost mnt]# vim time.sh
 

#!/bin/bash
read -p "please input minutes and seconds!" k j
a=$k*60+$j
for ((b=$a;b>0;b--))
do
    echo -n " Time $[$b/60]:$[$b%60] "
    echo -ne "\r"
    sleep 1
done

 

三、while循环

    创建用户westos{1…20},并修改密码为123456

[root@localhost mnt]# vim while.sh
 

#!/bin/bash
PREFIX="westos"
i=1
while [ $i -le 20 ]
do
    useradd ${PREFIX}$i
        echo "123456" | passwd --studin $[PREFIX]$i &> /dev/null
    ((i++))
done

[root@localhost mnt]# ls /home/
student   westos11  westos14  westos17  westos2   westos4  westos7
westos1   westos12  westos15  westos18  westos20  westos5  westos8
westos10  westos13  westos16  westos19  westos3   westos6  westos9

嵌套循环

    示例

[root@localhost mnt]# vim qt.sh
#!/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
效果如下:
[root@localhost mnt]# sh qt.sh
Starting outside loop: 1
Inside loop: 1
Inside loop: 2
Inside loop: 3
Starting outside loop: 2
Inside loop: 1
Inside loop: 2
Inside loop: 3
Starting outside loop: 3
Inside loop: 1
Inside loop: 2
Inside loop: 3

  

    练习:9*9乘法表

[root@localhost mnt]# vim 99.sh

#!/bin/bash
for ((a=1;a<=9;a++))              或者for a in $(seq 9)
do
   for ((b=1;b<=a;b++))           或者for b in $(seq $a)
   do   
    echo -ne "$a*$b=$(($a*$b))\t"
   done
   echo -e "\n"
done


[root@localhost mnt]# sh 99.sh
1*1=1    

2*1=2    2*2=4    

3*1=3    3*2=6    3*3=9    

4*1=4    4*2=8    4*3=12    4*4=16    

5*1=5    5*2=10    5*3=15    5*4=20    5*5=25    

6*1=6    6*2=12    6*3=18    6*4=24    6*5=30    6*6=36    

7*1=7    7*2=14    7*3=21    7*4=28    7*5=35    7*6=42    7*7=49    

8*1=8    8*2=16    8*3=24    8*4=32    8*5=40    8*6=48    8*7=56    8*8=64    

9*1=9    9*2=18    9*3=27    9*4=36    9*5=45    9*6=54    9*7=63    9*8=72    9*9=81
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值