shell第三章(shell流程控制)

本章内容:

  1. if语句
  2. for语句
  3. while语句
  4. break、continue

1、if语句

if语句用exit结束

1.1单分支

if 条件表达式 ;then

    命令

fi

实例:

#!/bin/bash
read -p "请输入数字" num
if [ $num -lt 10 ] ;then
        echo "${num}是数字两位数"
fi
...

╭─root@localhost.localdomain ~  
╰─➤  bash test.sh
请输入数字3
3是数字一位数

1.2、多分支

if 条件表达式 ;then
    命令
else
    命令
fi

实例:

#!/bin/bash
read -p "请输入数字" num
if [ $num -gt 9 -a $num -lt 100 ] ;then
        echo "${num}是数字两位数"
else
        echo "${num}不是数字两位数"
fi
...

╭─root@localhost.localdomain ~  
╰─➤  bash test.sh 
请输入数字56
56是数字两位数
╭─root@localhost.localdomain ~  
╰─➤  bash test.sh
请输入数字222
222不是数字两位数

1.3、多分支

if 条件表达式 ;then
    命令
elif 条件表达式 ;then
    命令
else
    命令
fi

实例:

#!/bin/bash
num=`echo $RANDOM`
if [ $num -lt 1000 ];then
        echo "$num小于1000"
elif [ $num -ge 1000 -a $num -lt 2000 ];then
        echo "$num大于等于1000,小于2000"
elif [ $num -ge 2000 -a $num -lt 3000 ];then
        echo "$num大于等于2000,小于3000"
elif [ $num -ge 3000 -a $num -lt 4000 ];then
        echo "$num大于等于3000,小于4000"
else
        echo "$num大于等于4000"
fi
...
╭─root@localhost.localdomain ~  
╰─➤  bash test.sh
24497大于等于4000
╭─root@localhost.localdomain ~  
╰─➤  bash test.sh
20763大于等于4000

2、for 循环

for  变量名  in  取值列表

do

    命令

done

实例:

#!/bin/bash
. /etc/init.d/functions
ip=192.168.80.
for i in `seq 10`
do
        if ping -c 1 -w 1 $ip$i &>/dev/null;then
                echo -n " $ip$i"    #-n:作用不换行  ;$ip前有空格
                success
                echo " "
                sleep 1
        else
                echo -n " $ip$i"
                failure
                echo " "
                sleep 1
        fi
done

...
╭─root@localhost.localdomain ~  
╰─➤  bash test.sh
 192.168.80.1                                              [  OK  ]
 192.168.80.2                                              [  OK  ]
 192.168.80.3                                              [  OK  ]
 192.168.80.4                                              [  OK  ]
 192.168.80.5                                              [FAILED]
 192.168.80.6                                              [FAILED]
 192.168.80.7                                              [FAILED]
 192.168.80.8                                              [FAILED]
 192.168.80.9                                              [FAILED]
 192.168.80.10                                             [FAILED]

3、while循环

while 条件表达式 ; do

      命令

done

3.1、一般循环

当条件表达式为 false 时,终止循环

实例:

#!/bin/bash
N=0
while [ $N -lt 5 ]; do
        echo $N
        let N++
done
...
╭─root@localhost.localdomain ~  
╰─➤  bash test1.sh
0
1
2
3
4

3.2、死循环

条件表达式为 true,将会产生死循环

#!/bin/bash
while true ;do
        echo "hello"
        sleep 1
done

...
╭─root@localhost.localdomain ~  
╰─➤  bash test2.sh
hello
hello
hello
hello
hello
^C
  • 命令行中输入 nohup bash naolie.sh & 即可在后台持续运行该脚本

4、break和continue语句

  • continue 与 break 语句只能循环语句中使用;
  • break:终止循环,运行针跳至done后;
  • continue :跳出当前循环,运行针跳至do后,开始下一循环;

演示:
break语句

#!/bin/bash
N=0
while [ $N -lt 10 ]; do
        let N++
        if [ $N -eq 5 ]; then
                break
        fi
        echo $N
done
...
╭─root@localhost.localdomain ~  
╰─➤  bash test1.sh
1
2
3
4

continue语句

#!/bin/bash
N=0
while [ $N -lt 10 ]; do
        let N++
        if [ $N -eq 5 ]; then
                continue
        fi
        echo $N
done
...
╭─root@localhost.localdomain ~  
╰─➤  bash test1.sh
1
2
3
4
6
7
8
9
10

实例拓展:

实例1:

#!/bin/bash
echo "主机名:`hostname`"
echo "IP地址:`ip a | grep "global" | cut -d "/" -f 1 | cut -d "t" -f 2 | tr -d " "`"
echo "操作系统版本:`cat /etc/redhat-release`"
echo "内核版本:`uname -r`"
echo "CPU信息:`lscpu | grep -i "Model name" | cut -c "24-69"`"
echo "内存总大小:`free -h | grep "Mem" | cut -d "M" -f 2 | tr -d "em: "`M"
...
╭─root@localhost.localdomain ~  
╰─➤  bash test6.sh
主机名:localhost.localdomain
IP地址:192.168.80.3
操作系统版本:CentOS Linux release 7.3.1611 (Core) 
内核版本:3.10.0-514.el7.x86_64
CPU信息:Intel(R) Core(TM) i5-4210M CPU @ 2.60GHz
内存总大小:976M
...

实例二:

#!/bin/bash
sum=0
for i in `find / -type f -a -name "*.sh"`
do
        size=`ls -l $i | cut -d " " -f 5`
        let sum+=size
done
echo ".sh结尾的总大小$(($sum/1024))kb"
...
╭─root@localhost.localdomain ~  
╰─➤  bash test7.sh
.sh结尾的总大小1098kb

1675881-20190601110454171-1607702544.jpg

转载于:https://www.cnblogs.com/du-z/p/10959937.html

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值